데이터 가능한 모든 열에서 최대 문자열 길이를 얻는 방법
문제
데이터 가능한 객체가 있습니다. 모든 열은 유형 문자열입니다.
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();
제휴하지 않습니다 StackOverflow