从通用列表<datarow>到通用列表<string> </string> </datarow>的转换出错

时间:2013-03-07 07:32:13

标签: c# .net linq compiler-errors

我有以下代码

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>'

请帮忙。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

试试这个:

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

linq .Select使您可以选择当前集合的任何属性。使用“选择”列以外的任何其他有用字段。