Comment obtenir une longueur de chaîne maximale dans chaque colonne d’un datatable

J’ai un object DataTable. Chaque colonne est de type chaîne.

Avec LINQ, comment puis-je obtenir la longueur de chaîne maximale pour chaque colonne?

La longueur de chaîne maximale pour la table entière (en supposant au moins une valeur non nulle, sinon Max lève une exception):

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

Si vous voulez une longueur de chaîne maximale pour chaque colonne, vous pouvez le faire (en supposant au moins une valeur non nulle dans chaque colonne, sinon Max lève une exception):

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

Avec c # 6, vous pouvez empêcher l’exception en ajoutant val? .Length

 var maximumLengthForColumns = Enumerable.Range(0, dt.Columns.Count) .Select(col => dt.AsEnumerable() .Select(row => row[col]).OfType() .Max(val => val?.Length )).ToList();