如何在linq表达式中添加第二个where子句

时间:2014-06-25 18:33:56

标签: linq iqueryable

尝试将第二个where子句添加到linq表达式,但不会注册。

var query = _dbSetBookedResource.AsQueryable<Resource>();

var resources = (from Resource in query where Resource.DateFrom == date select Resource)


if(true)
{
resources.Where(b => b.MemberId == currentUserId);
}

由于某种原因,第二个where子句不会注册。

1 个答案:

答案 0 :(得分:1)

  

由于某种原因,第二个where子句不会注册。

那是因为你没有在任何地方使用返回值。那只是设置一个查询,然后忽略它。没有LINQ方法更改它们被调用的值 - 而是创建一个 new 查询,它具有适当的过滤,投影等。

你需要:

resources = resources.Where(b => b.MemberId == currentUserId);

另请注意,您的初始查询可以更简单地编写为:

var resources = query.Where(r => r.DateFrom == date);

当你想要的只是一个简单的过滤器或投影时,查询表达式是过度的。