我有这段代码:
allGyms.Select("type = 1");
foreach(DataRow allGymsRow in allGyms.Rows)
{
}
allGyms存储了25行,7行,类型为1,另外7行,类型为2等等。现在我正在尝试使用当前DataTable
来检索具有类型的行1,所以它应该返回7行..但是当我调试到foreach循环时,allGyms有25行而不是预期的7行。
有谁知道我做错了什么?
答案 0 :(得分:2)
其他答案是讨论IEnumerable上的Select方法。
我相信你正试图在DataTable上使用Select方法。
如果是这种情况,则问题是您没有保存该方法返回的已过滤数组。您需要保存返回的数组,然后通过它进行预测。
var filteredRows = allGyms.Select("type = 1");
foreach(DataRow allGymsRow in filteredRows)
{
...
}
答案 1 :(得分:0)
Select()将方法应用于每个元素。这是一种优雅的方式来改变集合中的元素,例如数组。
我认为您要创建一个DataTable,以便您可以从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 "";
答案 2 :(得分:0)
尝试一起使用Select和Where:
allGyms.Select().Where(t => t.type == 1);