2013-09-27 36 views
0

我将取决于多个条件选择WHERE和条款实体框架

我知道我可以使用此语句

var session = (from us in context.UserSessions 
       where us.UserId == dbUser.Id 
       select us).FirstOrDefault(); 

选择,但我想这样做

var session = (from us in context.UserSessions 
       where us.UserId == dbUser.Id 
       and us.somefield == somevalue 
       select us).FirstOrDefault(); 

但关键字不被识别

回答

3

不要让查询语法骗了:) - 这是C#,所以and仍然&&

var session = (from us in context.UserSessions 
      where us.UserId == dbUser.Id 
      && us.somefield == somevalue 
      select us).FirstOrDefault(); 

或者,这可以在lambda语法更简洁表达(你可以删除冗余SelectWhere条款,如果您使用FirstOrDefault overload这需要一个谓语):

var session = context 
     .UserSessions 
     .FirstOrDefault(us => us.UserId == dbUser.Id && us.somefield == somevalue); 
+0

+1为更清晰的方法语法。 – NinjaNye

0
var session = (from us in context.UserSessions 
       where us.UserId == dbUser.Id 
       && us.somefield == somevalue 
       select us).FirstOrDefault(); 
+0

唯一代码的答案一般都是气馁。请解释你的答案。 – RedEyedMonster