2009-06-27 7 views

Répondre

11

La longueur maximale de la chaîne pour toute la table (en supposant au moins une valeur non nulle là, sinon, Max lancera une exception):

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

Si vous voulez la longueur maximale de la chaîne pour chaque colonne , vous pouvez faire (en supposant au moins une valeur non nulle dans chaque colonne, sinon, Max lancera une 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(); 
+0

Qui obtient la longueur de la chaîne la plus longue dans la table entière. J'ai besoin des longueurs des plus longues chaînes de chaque colonne. –

+0

@Ronnie: Mise à jour de la réponse. –

0

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<string>() 
            .Max(val => val?.Length)).ToList(); 
Questions connexes