Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
777 views
in Technique[技术] by (71.8m points)

c# - How to get Max String Length in every Column of a Datatable

I have a DataTable object. Every column is of type string.

Using LINQ, how can I get the maximum string length for every column?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The maximum string length for the whole table (assuming at least one non-null value there, otherwise, Max will throw an exception):

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

If you want maximum string length for each column, you could do (assuming at least one non-null value in each column, otherwise, Max will throw an exception):

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...