我想構建一個動態查詢,如果對象的值不是空字符串,就能夠擴展where子句條件。下面是過濾對象的代碼在where子句中構建動態linq查詢
public IEnumerable<Filter> GetFilter(Filter filter)
{
var y = ConditionalAttribute(filter);
var query =
from sub in Subscriptions
join u in Users
on sub.UserID equals u.Id
join od in Order_Details1
on sub.OD_Id equals od.OD_Id
join p in Products
on od.ProductId equals p.ProductId
where p.Type == "Testing" + y
select new Filter
{
//do something
};
,這裏是代碼
public class Filter
{
public int UserId { get; set; }
public string FirstName { get; set;}
}
的想法是,如果filter.FirstName不爲空,將追加這樣
public String ConditionalAttribute(Filter filter)
{
if(filter.FirstName != "")
return "&& u.First_Name = " + filter.FirstName + "";
}
where子句
有沒有什麼辦法像上面的代碼一樣通過字符串來附加where子句?因爲我試過上面的方法,所以失敗了,謝謝
這不是簡單或容易,除非你已經在使用一個框架,爲你做繁重的工作..我想,你想要這樣的東西 - http://dynamiclinq.codeplex.com/ – 2014-10-22 03:58:13