为何出现Cannot convert generic List<int>及&&无法操作bool与IEnumerable错误
问题根因
- 运算符
&&类型不匹配报错:Where方法返回的是满足筛选条件的元素集合(IEnumerable类型),而非布尔值,但&&要求两侧操作数必须为bool类型,直接将内层Where的返回值放在&&右侧就会触发该错误。 - 泛型列表转换报错:当
Where查询的返回值类型和你声明的TemplateNote变量的List<TemplateNoteModel>类型不匹配时,就会触发该类型转换错误,本质是上一个逻辑错误导致的连锁问题。
修复方案
你当前的需求是筛选出同时满足「Content等于AA」、「Conditions嵌套列表中存在至少一个Target等于removeAgentDisease的元素」的主列表对象,只需要把内层的Where方法替换为Any方法即可,Any会返回布尔值表示是否存在满足条件的元素,符合&&运算符的类型要求:
TemplateNote = TemplateNote.Where(x => x.Content == "AA" && x.Conditions.Any(v => v.Target == removeAgentDisease)) .ToList();
如果你的实际需求是筛选「Conditions嵌套列表中所有元素都满足Target等于removeAgentDisease」,可以把Any替换为All方法;如果需要筛选「Conditions嵌套列表中不存在满足Target等于removeAgentDisease的元素」,可以写为!x.Conditions.Any(v => v.Target == removeAgentDisease)。
内容的提问来源于stack exchange,提问作者Jefferson
相关产品推荐
相关产品推荐

