2010-11-11 9 views
1

J'ai un ensemble de données ds avec deux champs, AllowInputint et TypeNamechaîne.
Je veux obtenir tous TypeName comme une chaîne séparée par des virgules où AllowInput == 1comment tirer des données filtrées à partir d'un Datatable et créer une chaîne

C'est ce que j'ai fait jusqu'à présent.

string keys = string.Join(",", ds.Tables[0].Rows.Cast<DataRow>(). 
       Where(x => x["AllowInput"].ToString() == "1"). 
       ToArray(). 
       Cast<DataRow>(). 
       Select(x => x["TypeName"].ToString()). 
       ToArray()); 

Cela fonctionne. Mais le code doit-il être aussi verbeux?

Répondre

2

Vous pouvez probablement déposer les 2 lignes suivantes:

  ToArray(). 
      Cast<DataRow>(). 
1

Vous pouvez également envisager d'utiliser le DataRow extensions défini dans LINQ à DataSet

Quelque chose comme:

string keys = string.Join(",", from row in table.AsEnumerable() 
           where (row.Field<int>("AllowInput") == 1) 
           select row.Field<string>("TypeName"));