我很難解決這個問題,需要在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