首先,如果我没有解释清楚,对不起,我已经忙碌了几个小时,现在已经是早上了。
我尝试过很多方法,遇到了很多错误,我已经记不起原来的版本了,也无法解决问题,这是我的代码,它很糟糕,因为我应该使用连接查询,但我的存储过程在这个服务器上有 bug。
SqlConnection conn = new SqlConnection(connstring);
DataSet ds = new DataSet();
SqlDataAdapter ad;
SqlCommand cmd = new SqlCommand();
ad = new SqlDataAdapter("SELECT * FROM booking WHERE bookstartdate BETWEEN '" + ReturnDbDate(datefrom).ToString() + "' AND '" + ReturnDbDate(dateto).ToString() + "'", conn);
ad.Fill(ds, "CustomerIds");
ad = new SqlDataAdapter("SELECT customerid, firstname, lastname, telephone, email FROM customer", conn);
ad.Fill(ds, "Customers");
DataTable dt = new DataTable();
dt.Columns.Add("Customerid", typeof(String));
dt.Columns.Add("Firstname", typeof(String));
dt.Columns.Add("Lastname", typeof(String));
dt.Columns.Add("Telephone", typeof(String));
dt.Columns.Add("Email", typeof(String));
int lol = ds.Tables["CustomerIds"].Rows.Count;
foreach (DataRow row in ds.Tables["CustomerIds"].Rows)
{
IEnumerable<DataRow> r = from dr in ds.Tables["Customers"].AsEnumerable()
where dr.Field<Guid>("customerid").ToString() == row[2].ToString()
select dr;
dt.Rows.Add(r);
}
return dt;
当我尝试使用以下代码循环遍历数据集时:
foreach (DataRow rows in dt.Rows)
{
sb.Append("<tr><td>" + rows["Customerid"].ToString() + "</td><td>" + rows[1] + "</td><td>" + rows[2] +"</td><td>" + rows[3] + "</td></tr>");
}
我得到了:
有人有什么想法吗?我现在完全脑残了,所以这可能是一些简单的东西。System.Data.EnumerableRowCollection`1[System.Data.DataRow]
谢谢。
编辑:
DataRow r = from dr in ds.Tables["Customers"]
where dr.Field<Guid>("customerid").ToString() == row[2].ToString()
select dr;
dt.ImportRow(r);
错误: 找不到' System.Data.DataTable '源类型的查询模式实现。未找到'Where'。
我假设我的LINQ语法是正确的,尽管我认为有一个IEnumberable<T>.Where()
方法?我记得它,只是不记得如何访问它。
编辑2:
我失败了,又一次重现了这个问题,叹气。
IEnumerable<DataRow> r = from dr in ds.Tables["Customers"].Select().Where(x => x.Field<Guid>("customerid").ToString() == row[2].ToString())
select dr;
dt.ImportRow(r);