无法使用Linq从DataSet获取特定ID的数据
问题描述:
我试图在本网站上使用不同的示例,但无法找到解决我问题的示例。无法使用Linq从DataSet获取特定ID的数据
我有一个数据集,我需要得到所有使用Linq
该数据集的行与给定的ID
我做了以下内容:
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不包含定义字段并没有扩展方法接受领域的DataRow的第一个参数...
我发现实现这一目标的另一种方式:
DataRow[] listOfData = myData.Tables[1].Select("id=" + id);
和它的作品,但我不希望使用的DataRow [],并希望使用Linq的查询与where
条款
什么时我错过了,是否有另一种方式呢?
答
您应该引用System.Data.DataSetExtensions程序集并为System.Data
添加使用。 Field<T>()
被定义为DataRowExtensions类中的扩展函数。
虽然看到您在for循环中有效地进行了连接,但我会修改用于填充此数据集的查询,并将连接推送到底层数据库以提高性能。
答
试试这个:
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);
}
+0
@gene您是否知道能够使上述简单修复工作? – yido
我有需要用到2个数据集。我只需要根据第一个数据库中的第二个数据集获取所有数据 – gene