我尝试在此网站上使用不同的示例,但无法找到解决我问题的示例。
我有一个DataSet,我需要使用具有给定ID的Linq
从该DataSet获取所有行
我正在做以下事情:
foreach (DataRow dataRow in myData.Tables[0].Rows)
{
string id = dataRow["id"].ToString().Trim();
var listOfData = myData.Tables[1].Rows.Cast<DataRow>().Where(x => x.Field<string>("id") == id);
}
执行此操作时,我在Field<string>
部分说错误
DataRow不包含Field的定义,也没有扩展方法字段接受DataRow的第一个参数......
我找到了实现这一目标的另一种方式:
DataRow[] listOfData = myData.Tables[1].Select("id=" + id);
并且它可以工作,但我不想使用DataRow []并希望使用Linq&where
子句的查询
我缺少什么,还有另一种方法吗?
答案 0 :(得分:1)
您应该引用System.Data.DataSetExtensions程序集并为System.Data
添加一个using。 Field<T>()
被定义为DataRowExtensions类中的扩展函数。
虽然看到你在for循环中有效地进行了连接,但我会首先修改用于填充此数据集的查询,并将连接推送到底层数据库以获得性能。
答案 1 :(得分:0)
试试这个:
foreach (DataRow dataRow in dtZeroQtyBonusReceiveRows)
{
string id = dataRow["id"].ToString().Trim();
var listOfData = zeroQuantityRows.CopyToDataTable().Rows.Cast<DataRow>()
.Where(x => Convert.ToString(x["id"]) == id);
}