Мне сложно решить эту проблему, нужен код для создания динамического запроса linq на C#, asp.net. У меня есть 5 раскрывающихся списков, которые ищут разные столбцы в одной таблице базы данных и возвращают элемент в отдельном списке. Проблема в том, что в DDL нет последовательности, которая или все или любые будут выбраны, но объединенный отфильтрованный результат должен появиться в списке. У меня есть рабочий запрос, который ищет и возвращает результат в одном столбце за раз для каждого выбора DDL отдельно. Нужно добавить, где предложения с И, чтобы добавить другие варианты DDL динамически к этому запросу. БлагодаряЗапрос LinQ - Добавить где динамически
public ListItemCollection searchProject(ListItemCollection projList, String searchstr, String columnName)
{
DataSet DSToReturn = new DataSet();
ListItemCollection returnItems = new ListItemCollection();
DataTable results = (from d in ((DataSet)_MyDataset).Tables["Records"].AsEnumerable()
orderby d.Field<string>("Name") ascending
where (d.Field<string>(columnName) != null)
where d[columnName].ToString().ToLower().Contains(searchstr.ToLower())
select d).CopyToDataTable();
foreach (ListItem li in projList)
{
if ((from System.Data.DataRow row in results.Rows
where li.Value.Equals(row["value"].ToString(), StringComparison.InvariantCultureIgnoreCase)
select row["value"]).Count() > 0)
returnItems.Add(li);
}
return returnItems;
}
duplicate http://stackoverflow.com/questions/848415/linq-dynamic-where-clause –
Как я могу сделать этот запрос динамическим, чтобы добавить, где с каждым выбором DDL, пожалуйста, помогите мне с этим кодом. DataTable результатов = (от г в ((DataSet) _MyDataset) .tables [ "Records"]. AsEnumerable() OrderBy d.Field ("Name") восходящая где (d.Field (ColumnName)! = NULL) где d [columnName] .ToString(). ToLower(). Содержит (searchstr.ToLower()) выберите d) .CopyToDataTable(); –
menon
Возможный дубликат операторов [Linq2SQL "и/или" (условия ANDed/ORed)] (http://stackoverflow.com/questions/1450983/linq2sql-or-and-operators-anded-ored-conditions) –