2013-02-28 28 views
15

Mam datatable, który zawiera tylko jedną kolumnę i wszystkie elementy są ciągami. Jak mogę przekonwertować to na przykład na List<string> używając LINQ?Jedna kolumna datatable do listy <string>

Próbowałem:

DataRow[] rows = dtusers.Select(); 
var qq = from RowCollection in rows 
     select new { UserCode = LibStatic.ToStr(RowCollection["UserCode"]) }; 

List<string> users = new List<string>(); 
users = qq.Cast<string>().ToList(); 

Istnieje EasyWay który zawsze działa:

foreach (DataRow dr in dtusers.Rows) 
{ 
    users.Add(dr[0].ToString()); 
} 

Odpowiedz

43

Można użyć LINQ query to zrobić.

List<string> list = dtusers.AsEnumerable() 
          .Select(r=> r.Field<string>("UserCode")) 
          .ToList(); 
+1

Naprawdę użyteczny. dzięki .. :) – Divya

+1

dziękuję, Dla każdego, kto chce uniknąć użycia nazwy kolumny. Wybierz (r => r.Field (0)) – user960567

+1

Mam błąd EnumerableRowCollection nie zawiera definicji listy .. w tym przypadku systemu importu. Pakiet LinQ do twojej klasy –