문제

데이터 가능한 객체가 있습니다. 모든 열은 유형 문자열입니다.

LINQ를 사용하면 모든 열의 최대 문자열 길이를 어떻게 얻을 수 있습니까?

도움이 되었습니까?

해결책

전체 테이블의 최대 문자열 길이 (적어도 하나의 널 값이 하나 이상 있다고 가정합니다. 그렇지 않으면 Max 예외를 던집니다) :

int maxStringLength = dataTable.AsEnumerable()
                              .SelectMany(row => row.ItemArray.OfType<string>())
                              .Max(str => str.Length);

최대 문자열 길이를 원한다면 열, 당신은 할 수 있습니다 (각 열에서 널 숫자가 하나 이상 있다고 가정합니다. 그렇지 않으면 Max 예외를 던집니다) :

List<int> maximumLengthForColumns = 
   Enumerable.Range(0, dataTable.Columns.Count)
             .Select(col => dataTable.AsEnumerable()
                                     .Select(row => row[col]).OfType<string>()
                                     .Max(val => val.Length)).ToList();

다른 팁

C# 6을 사용하면 val? .length를 추가하여 예외를 방지 할 수 있습니다.

var maximumLengthForColumns =
                Enumerable.Range(0, dt.Columns.Count)
                .Select(col => dt.AsEnumerable()
                                     .Select(row => row[col]).OfType<string>()
                                     .Max(val => val?.Length )).ToList();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top