2013-03-07 76 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