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

Roh*_*hit 3 .net c# linq compiler-errors

我有下面的代码

List<string> esfa = NewTable.AsEnumerable().Where(row => row.Field<string>("Select")   
=="true").ToList();
Run Code Online (Sandbox Code Playgroud)

编译时收到错误

无法隐式转换'System.Collections.Generic.List<System.Data.Datarow>''System.Collections.Generic.List<string>'

请帮忙.

Jon*_*eet 8

嗯,是.您正在按字段过滤Select - 但过滤的结果仍然是一系列行.我希望这是你想要的 - 毕竟,你知道Select每一行中的字段的价值,所以这不是很有趣......

我想你可能只想要:

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

(请注意,将代码分成多行就像这样可以极大地提高可读性.)

如果你真的想要其他某个领域的价值,你可能需要这样的东西:

List<string> rows = NewTable.AsEnumerable()
                            .Where(row => row.Field<string>("Select") == "true")
                            .Select(row => row.Field<string>("LastName"))
                            .ToList();
Run Code Online (Sandbox Code Playgroud)