0

材料のいずれかが材料グループリストで比較可能な場合に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) を追加した理由を知りたい場合は、それがないと、クエリが bool ではなく bool の IEnumerable を返すためです。

4

1 に答える 1