LINQ过滤器具体或全部

时间:2010-11-04 20:32:21

标签: asp.net-mvc linq-to-sql linq-to-entities

我正在将过滤器模型传递给我的服务。用户可以选择any null或空字符串。如何设置一次.Where查询,该查询将忽略该过滤器?

一个例子:

public class UserFilterModel
{
    public string State {get; set;};
    public string Age {get; set;};
}

过滤器:(如何使其更符合我的需求?)

var result = context.Users.Where(u => u.State == filter.State && u.Age == filter.Age);

因此,如果用户为State选择null或为空,那么当我实际想要忽略该过滤器时,这将返回具有空状态或空状态的记录。

另外,我正在使用asp.net mvc 2,如果我做错了什么,请告诉我。使用存储库模式。

1 个答案:

答案 0 :(得分:1)

这是一种方式:

var result = context.Users.Where(
    u => (String.IsNullOrEmpty(filter.State) || u.State == filter.State) &&
         (String.IsNullOrEmpty(filter.Age) || u.Age == filter.Age)
);