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();