2013-03-07 51 views
3

我有以下錯誤的轉換,從泛型列表<Datarow>到泛型列表<string>

List<string> esfa = NewTable.AsEnumerable().Where(row => row.Field<string>("Select") 
=="true").ToList(); 

的代碼,而編譯得到錯誤

無法隱式轉換類型'System.Collections.Generic.List<System.Data.Datarow>''System.Collections.Generic.List<string>'

請幫幫我。

回答

8

嗯,是的。你過濾Select字段 - 但該過濾的結果仍然是一系列的行。我希望這是你想要的東西 - 畢竟,你知道每一行的Select字段的值,所以不能很有趣......

我想你也許只是想:

List<DataRow> rows = NewTable.AsEnumerable() 
          .Where(row => row.Field<string>("Select") == "true") 
          .ToList(); 

(請注意,將代碼分成多行這樣可以大大提高可讀性。)

如果你其實想一些其他字段的值,你可能想是這樣的:

List<string> rows = NewTable.AsEnumerable() 
          .Where(row => row.Field<string>("Select") == "true") 
          .Select(row => row.Field<string>("LastName")) 
          .ToList(); 
+0

感謝喬恩我想這就是我正在尋找的 – Rohit 2013-03-07 07:39:45

2

試試這個:

List<string> esfa = db.AsEnumerable() 
         .Where(row => row.Field<string>("Select") == "true") 
         .Select(s => s.Field<string>("Select")) 
         .ToList(); 

LINQ .Select,可以選擇任何當前集合的性質。使用「選擇」列以外的其他有用字段。

+2

這不太可能是有用的,因爲它將是一個「真實的」,「真實的」,「真實的」,「真實的」列表...... – 2013-03-07 07:40:26

+0

它只是給他一個想法。選擇:) – 2013-03-07 07:41:12