我的EF查询需要一个像逻辑一样的case语句

时间:2014-04-15 14:45:31

标签: c# linq entity-framework

我需要以某种方式在我的EF查询中使用这个逻辑,这可能吗?

User
- salesCountUSA
- salesCountEurope

我的方法看起来像

public List<User> GetUsers(bool isUSA, int salesCount)
{

 var users = from u in this.MyContext.Users
         where ????

}

在代码中我会这样做:

int salesCount = isUsa ? salesCountUSA : salesCountEurope

我如何在EF中模仿这个?

2 个答案:

答案 0 :(得分:2)

由于延迟执行,您可以有条件地构造查询:

var query = MyContext.Users.AsQueryable();
if(isUSA)
    query = query.Where(user => user.salesCountUSA == salesCount)
else
    query = query.Where(user => user.salesCountEurope == salesCount)

答案 1 :(得分:0)

您可以使用LET声明

var users = from u in this.MyContext.Users
     let salesCount = u.isUsa ? u.salesCountUSA : u.salesCountEurope
     where salesCount > 0