如何根据列值显示特定的数据行



从这个代码中,我试图只显示包含Station_From_Code列中的"DBY"字段和Station_To_Column中的"MAT"字段的数据行。然后将其打印到HTML页面上。这些字段肯定在数据表中,但当我运行这个命令时,表是空的。我不习惯在c#中使用数据表,所以为糟糕的编码道歉。

dynamic schedluedContent = JsonConvert.DeserializeObject(scheduledJson);
            JArray items2 = new JArray();
            foreach (JObject stops in schedluedContent.stops)
            {
                   DataTable dt = new DataTable();
                   DataRow dr;
                   dr = dt.NewRow();
                   dr["From_Station_Code"] = stops["station_code"];
                   dr["To_Station_Code"] = stops["station_code"];
                   dt.Rows.Add(dr);
                   DataRow[] result = dt.Select("From_Station_Code = 'DBY' AND To_Station_Code = 'MAT'");
                   dt.Rows.Add(result);
                   GridViewTrainTimes.DataSource = dt;
                   GridViewTrainTimes.DataBind();
              }

我已经很长时间没有看到这种风格的代码用于处理数据库表了!EntityFramework的出现改变了数据库的工作方式,并避免了在代码中使用SQL命令的不同风险。

如果你使用EF,你的代码将变成如下所示:

var rows = myDBContext.MyTable.Where(x=>x.From_Station_Code == "DBY" && x.To_Station_Code == "MAT");
GridViewTrainTimes.DataSource = rows;

您可以使用查找匹配行并添加新的数据表,它只包含您的匹配行数据,然后您可以将此dt绑定到gridview

DataTable dt = new Datatable(); // Lets this datatable have data;
Datatable dt2 = new Datatable(); // Copy all matching rows
foreach (DataRow dr in dt.Rows)
{
if (dr["From_Station_Code"].ToString() == "DBY" && dr["To_Station_Code"].ToString() == "MAT")
{
    dt2.Rows.Add(dr);
}
}
GridViewTrainTimes.DataSource = dt;
GridViewTrainTimes.DataBind();

相关内容

  • 没有找到相关文章

最新更新