我在其他解决方案中多次这样做。但在其中一个中,它不起作用。不知道为什么。
我想在某些dataTable中使用Where()
。所以,我这样做,例如
int someId;
DatasetName.DatatableName.AsEnumerable().Where(x => x.id == someId);
但是在这个项目中,它无法识别lambda x => x.id == someId
为什么?我不能用它们。知识分子,(
中的Where
认识到需要接收Func
,而当我x => x.
时,它无法识别DataTable的字段。为什么我不能x.id
?我知道我可以使用Field<>()
(我认为这就是名字),但我已经多次直接使用这些表达式,我认为它们更具可读性。而在其他解决方案确实有效。
我添加了
的参考资料using System.Linq;
using System.Data.Linq;
using System.Linq.Expressions;
它无法编译,也无法识别Datatable的任何字段。
该项目设置为.Net Framework 3.5
。
任何帮助将不胜感激
答案 0 :(得分:1)
我假设您正在使用强类型数据集。
由于某种原因,AsEnumerable()
可能会返回IEnumerable<Object>
。尝试添加演员:
DatasetName.DatatableName.AsEnumerable().Cast<MyRowType>().Where(x => x.id == someId);
您还应该确保DataTable正确地继承自System.Data.TypedTableBase<MyRowType>
。
答案 1 :(得分:0)
dataSet.Tables[0].AsEnumerable().Where(
r => r["Col1"] == "MyValue")
您可以使用LINQ to DataSet进行此操作: