Lambda 无法识别数据表的字段



我在另一个解决方案中做过很多次。但在其中一个中,它不起作用。不知道为什么。

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

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

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

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

我添加了引用

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

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

任何帮助将不胜感激

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

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

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

还应确保数据表正确继承自System.Data.TypedTableBase<MyRowType>

dataSet.Tables[0].AsEnumerable().Where(
r => r["Col1"] == "MyValue")

可以使用 LINQ to DataSet 执行以下操作:

最新更新