我很难解决这个问题,需要在C#,asp.net中创建动态LINQ查询的代码。我有5个下拉列表,它在同一个数据库表中搜索不同的列,并将项目过滤值返回给一个列表框。问题是在DDL中没有选择哪个或全部或哪些将被选择的顺序,但组合的过滤结果应该显示在列表框中。我有一个正在运行的查询,它正在为每个DDL选择单独搜索并返回一列中的结果。必须使用AND添加where子句以将其他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 – 2009-10-28 14:52:18
如何使此查询动态添加每个DDL选择的位置,请帮助我使用此代码。 (“Name”) 其中(d.Field(columnName)!= null)数据表结果=(来自((DataSet)_MyDataset中的d)。表格[“记录”] AsEnumerable() orderby d.Field ) where d [columnName] .ToString()。ToLower()。Contains(searchstr.ToLower()) select d).CopyToDataTable(); –
menon
2009-10-28 17:07:45
[Linq2SQL“or/and”operators(ANDed/ORed conditions)]的可能重复(http://stackoverflow.com/questions/1450983/linq2sql-or-and-operators-anded-ored-conditions) – 2011-08-03 11:18:26