或实体框架中的条件

时间:2012-10-15 10:12:34

标签: c# entity-framework

我正在研究实体框架项目,我必须在dbContext.Where中应用Or condition 我试过这个,但它给了我错误“运算符||不能应用于类型lambda表达式的操作数”

return dataContext.Friends
              .Where((r => r.ToUserId == touserid && r.FromUserId == fromuserid) 
                  || (r => r.ToUserId == fromuserid&& r.FromUserId == touserid ))
              .ToList();

我也试过使用&&而不是||但它给了我同样的错误&&,我怎么能申请或条件这个senario? 我也试过没有括号

3 个答案:

答案 0 :(得分:5)

你需要这样做:

return dataContext.Friends.Where(r => (r.ToUserId == touserid && r.FromUserId == fromuserid) || (r.ToUserId == fromuserid && r.FromUserId == touserid))
                          .ToList();

唯一的区别是我删除了第二个r =>并修复了括号。

答案 1 :(得分:4)

将它放入一个包含||而不是||两个单独的lambas的lambda中:

return dataContext.Friends.Where(r => (r.ToUserId == touserid && r.FromUserId == fromuserid) || (r.ToUserId == fromuserid&& r.FromUserId == touserid)).ToList();

答案 2 :(得分:-2)

@Syed

|| (r => r.ToUserId == fromuserid&& r.FromUserId == touserid )).ToList();

应该是

|| (r => r.ToUserId == fromuserid && r.FromUserId == touserid )).ToList();

请注意“fromuserid&&”之间的空格。