如果任何材料在材料组列表中具有可比性,我有这个查询可以执行我想要的返回 true。
mgroup.MaterialGroups.Select(x => x.Materials
.Any(m => Convert.ToBoolean(m.Comparable)))
.Any(x => x.Equals(true))
我想添加到这个查询中的是也包括这个。
mgroup.Materials.Any(m => Convert.ToBoolean(m.Comparable));
如何在查询中将 mgroup 和它的材料组组合在一起,以便我可以选择它们的两种材料?谢谢。
编辑- 在与 LINQ 战斗了一段时间后,我崩溃了,只是合并为
mgroup.Materials.Any(m => Convert.ToBoolean(m.Comparable) ||
mgroup.MaterialGroups.Select(x => x.Materials
.Any(c => Convert.ToBoolean(c.Comparable)))
.Any(x => x.Equals(true)))
它按预期工作,但它非常长,并且嵌入在 Asp.net MVC 视图中,使事情变得更糟。如果有人可以简化这将是惊人的。
PS-如果您想知道为什么我在末尾添加了额外的 .Any(x => x.Equals(true),那是因为没有它,查询将返回布尔值的 IEnumerable 而不是布尔值。