0

我正在尝试使用 SelectMany 来评估带有条件的第一个查询,根据这些结果执行另一个查询。我被告知 SelectMany 应该能够做到这一点。我遇到的问题是 SelectMany 似乎忽略了第一个 lambda 表达式中的条件。我的问题可能与第一个表达式有关,但我不太确定。任何想法我做错了什么。

第一的

  //get source based on user and active flag
  var query = _sourceRepository.GetTable().Where(s => s.ActionItemStates.Any(ais => ais.UserId == user.Id && ais.IsActive == active));  

第二 - 忽略第一个条件

var queryActionItems = query.SelectMany(x => x.ActionItemStates).OrderBy(x => x.ActionItem.SortOrder);

在此处输入图像描述

4

1 回答 1

1

好吧,您的第一个查询并没有断言所有ActionItemStates用户ID 和 IsActive 都为真。

这只是意味着:在至少一个满足我的条件的地方选择Sources我。 ActionItemState

但是在第二个查询中,ActionItemStates不再提交您的条件:您只是ActionItemStatesSources第一个查询中选择的所有内容中提取。

第一个查询在 之间进行选择Sources,而不是在 之间进行选择ActionItemStates

现在,这只是解释为什么它不起作用,真正的答案需要您清楚地解释您想要检索的内容!

于 2012-10-15T17:47:45.333 回答