无法使用Linq从DataSet获取特定id的数据

时间:2017-08-01 18:28:48

标签: c# linq dataset

我尝试在此网站上使用不同的示例,但无法找到解决我问题的示例。

我有一个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子句的查询

我缺少什么,还有另一种方法吗?

2 个答案:

答案 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);
            }