Первые извинения, если я не объясню это должным образом, я занимался этим часами, и сейчас утро.
Я перепробовал так много методов, получил так много ошибок, что я не могу вспомнить исходную версию, и я не могу решить проблему, вот мой код, это ужасно, так как я должен использовать запрос на соединение, мои SP содержат ошибки на этом сервере.
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]
У кого-нибудь есть идеи? Абсолютно мертвый мозг, так что это может быть что-то простое.
Спасибо
Edit:
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». «Где» не найдено.
Я предполагаю, что мой синтаксис LINQ не является неправильным, хотя я думаю, что есть метод IEnumberable<T>.Where()
? Я помню это, просто не могу вспомнить, как получить к нему доступ.
Edit2:
Не удалось, мне удалось воссоздать проблему снова, вздох
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);