3

我有下面的代码

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

请帮忙。

4

2 回答 2

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();
于 2013-03-07T07:34:03.683 回答
2

试试这个:

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

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

于 2013-03-07T07:35:49.943 回答