DataTable.Select 正在检索所有行?
DataTable.Select retrieving all rows?
我有这个代码:
allGyms.Select("type = 1");
foreach(DataRow allGymsRow in allGyms.Rows)
{
}
allGyms 存储了 25 行,其中 7 行的类型为 1,另外 7 行的类型为 2,依此类推。现在我正在尝试使用当前的 DataTable
检索行类型 1,所以它应该 return 7 行。但是当我调试到 foreach 循环时,allGyms 有 25 行而不是预期的 7..
有谁知道我做错了什么?
Select() 对每个元素应用一个方法。这是一种改变集合(例如数组)中的元素的优雅方法。
我想你想创建一个数据表,这样你就可以从你的 aspx.cs 文件中 运行 数据库查询,如下所示:
DataTable dt = new DataTable();
using (OracleConnection con = new OracleConnection(Application["ConnectionString"].ToString()))
{
con.Open();
string strSQL = "SELECT * FROM YourTable WHERE type = 1";
OracleDataAdapter adapter = new OracleDataAdapter(strSQL, con);
adapter.Fill(dt);
if (dt.Rows.Count > 0)
return dt.Rows[0][0].ToString();
}
return "";
尝试同时使用 Select 和 Where:
allGyms.Select().Where(t => t.type == 1);
其他答案都在谈论 IEnumerable 上的 Select 方法。
我相信您正在尝试在 DataTable 上使用 Select 方法。
如果是这种情况,问题是您没有保存该方法返回的过滤后的数组。您需要保存返回的数组,然后通过它进行 foreach。
var filteredRows = allGyms.Select("type = 1");
foreach(DataRow allGymsRow in filteredRows)
{
...
}
我有这个代码:
allGyms.Select("type = 1");
foreach(DataRow allGymsRow in allGyms.Rows)
{
}
allGyms 存储了 25 行,其中 7 行的类型为 1,另外 7 行的类型为 2,依此类推。现在我正在尝试使用当前的 DataTable
检索行类型 1,所以它应该 return 7 行。但是当我调试到 foreach 循环时,allGyms 有 25 行而不是预期的 7..
有谁知道我做错了什么?
Select() 对每个元素应用一个方法。这是一种改变集合(例如数组)中的元素的优雅方法。
我想你想创建一个数据表,这样你就可以从你的 aspx.cs 文件中 运行 数据库查询,如下所示:
DataTable dt = new DataTable();
using (OracleConnection con = new OracleConnection(Application["ConnectionString"].ToString()))
{
con.Open();
string strSQL = "SELECT * FROM YourTable WHERE type = 1";
OracleDataAdapter adapter = new OracleDataAdapter(strSQL, con);
adapter.Fill(dt);
if (dt.Rows.Count > 0)
return dt.Rows[0][0].ToString();
}
return "";
尝试同时使用 Select 和 Where:
allGyms.Select().Where(t => t.type == 1);
其他答案都在谈论 IEnumerable 上的 Select 方法。
我相信您正在尝试在 DataTable 上使用 Select 方法。
如果是这种情况,问题是您没有保存该方法返回的过滤后的数组。您需要保存返回的数组,然后通过它进行 foreach。
var filteredRows = allGyms.Select("type = 1");
foreach(DataRow allGymsRow in filteredRows)
{
...
}