DataTable.Select检索所有行?

时间:2015-09-15 18:43:53

标签: c# datatable

我有这段代码:

allGyms.Select("type = 1");
foreach(DataRow allGymsRow in allGyms.Rows)
{

}

allGyms存储了25行,7行,类型为1,另外7行,类型为2等等。现在我正在尝试使用当前DataTable来检索具有类型的行1,所以它应该返回7行..但是当我调试到foreach循环时,allGyms有25行而不是预期的7行。

有谁知道我做错了什么?

3 个答案:

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