0

我已经在另一个解决方案中多次这样做了。但在其中一个中,它不起作用。不知道为什么。

我想Where()在一些数据表中使用。所以,例如,我这样做

int someId;
DatasetName.DatatableName.AsEnumerable().Where(x => x.id == someId);

但是在这个项目中,它不识别 lambdax => x.id == someId

这是为什么?我不能使用它们。intelissense,(Where需要接收 a 的识别Func之后,当我这样做时x => x.,它无法识别 DataTable 的字段。为什么我做不到x.id?我知道我可以使用Field<>()(我认为这是名称),但我已经多次直接使用这些表达式,我认为它们更具可读性。在其他解决方案中确实可以做到这一点。

我已经添加了参考

using System.Linq;    
using System.Data.Linq;
using System.Linq.Expressions;

它不编译,也不识别数据表的任何字段。该项目设置为.Net Framework 3.5.

任何帮助将不胜感激

4

2 回答 2

1

我假设您正在使用强类型数据集。

AsEnumerable()可能由于某种原因正在返回IEnumerable<Object>。尝试添加演员表:

DatasetName.DatatableName.AsEnumerable().Cast<MyRowType>().Where(x => x.id == someId);

您还应该确保 DataTable 正确继承自System.Data.TypedTableBase<MyRowType>.

于 2012-10-17T14:59:45.957 回答
0
dataSet.Tables[0].AsEnumerable().Where(
r => r["Col1"] == "MyValue")

您可以使用 LINQ to DataSets 来执行此操作:

于 2012-10-17T15:02:44.290 回答