我正在尝试使用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);
答案 0 :(得分:1)
好吧,您的第一个查询并未声明所有ActionItemStates
都将使您的userId和IsActive为真。
只是意味着:选择我所有的Sources
至少一个 ActionItemState
符合我的条件。
但是在第二个查询中,ActionItemStates
不再符合您的条件:您只需从第一个查询中选择的ActionItemStates
中获取所有Sources
。
首次查询会在Sources
之间进行选择,而不是ActionItemStates
之间的选择。
现在,这只是解释为什么它不起作用,真正的答案需要你清楚地解释你想要检索的内容!