【发布时间】:2009-10-28 14:43:49
【问题描述】:
我很难解决这个问题,需要在 C#、asp.net 中创建动态 linq 查询的代码。我有 5 个下拉列表,用于搜索同一数据库表中的不同列并将项目过滤值返回到单个列表框。问题是在 DDL 中没有选择 which 或 all 或 any 的顺序,但组合过滤结果应显示在列表框中。我有一个有效的查询,它分别为每个 DDL 选择分别搜索并返回一列中的结果。必须使用 AND 添加 where 子句才能将其他 DDL 选择动态添加到此查询中。谢谢
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;
}
【问题讨论】:
-
如何使这个查询动态添加每个 DDL 选择的位置,请帮我处理这段代码。 DataTable results = (from d in ((DataSet)_MyDataset).Tables["Records"].AsEnumerable() orderby d.Field
("Name") 升序 where (d.Field (columnName) != null) where d[columnName].ToString().ToLower().Contains(searchstr.ToLower()) 选择 d).CopyToDataTable();
标签: linq