C# 使用where子句筛选datatable行

C# 使用where子句筛选datatable行,c#,datatable,dataset,where-clause,datarow,C#,Datatable,Dataset,Where Clause,Datarow,我有一个从数据集中提取的数据表。在DataTable中,我想使用Where子句返回特定的行。我查看了“”,但发现了一个错误 无法将类型“System.Data.DataRow[]”隐式转换为 “System.Data.DataRow” 我搜索了谷歌,但找不到解决方案 我的代码是: mySqlDataAdapter.Fill(myDataSet); DataTable dtTable = myDataSet.Tables[0]; DataRow dr = dtTable.Select("Vend

我有一个从数据集中提取的数据表。在DataTable中,我想使用Where子句返回特定的行。我查看了“”,但发现了一个错误

无法将类型“System.Data.DataRow[]”隐式转换为 “System.Data.DataRow”

我搜索了谷歌,但找不到解决方案

我的代码是:

mySqlDataAdapter.Fill(myDataSet);

DataTable dtTable = myDataSet.Tables[0];
DataRow dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString());
如何解决此问题?

Select()返回一个行数组,您将其分配给一行

你可以做:

DataRow dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString()).First();

这将为您提供一个行数组。

即使查询只选择一行,DataTable的方法也会返回一个DataRow数组

DataRow[] dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString());
然后,如果您真的只需要一行,那么您可以轻松获取所需的行来检查数组的长度。在这种情况下,我认为实际上不需要任何花哨的可枚举扩展方法

if(dr.Length > 0)
{
    string avalue = dr[0]["AColumnName"].ToString();
    ...
}

只有一个独特的结果

DataTable dtTable = myDataSet.Tables[0];
DataRow[] drs = dtTable.Select("VendorID = " + Session["VendorId"].ToString());
if(drs.Length > 0)
    DataRow dr = drs[0];
DataTable.Select()
返回
DataRow
的数组

DataRow[] dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString());
如果你只想要第一张唱片

DataRow[] dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString()).FirstOrDefault();
使用方法
First()

DataRow dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString()).First();

在本例中,Select()方法返回一个IEnumerable集合,其中包含一个DataRow。您必须改为使用FirstOrDefault()从该集合中提取数据行。

在IntelliSense中找不到FirstOrDefault您需要.net>=3.5以及对System.Data.DataSetExtensions和System.Linq的引用才能工作。。
DataRow dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString()).First();