我有一个类结构,如下所示。
CategoryA
{
CategoryB
{
CategoryC
{
}
}
}
我有一个LINQ查询来获取对象列表。
var ls = CategoryA.CategoryB.Where(x => x.CategoryBObjectId == someId);
返回CategoryB对象列表。
然后我想要一些CategoryC对象。
var ls2= ls.Where(x=>x.Any(y=>y.CategoryCObjectId==someAnotherID))
但是ls2返回的是CategoryB对象。
我想要的是满足指定条件的CategoryC对象列表。
有谁可以帮我改变LINQ查询?
答案 0 :(得分:2)
使用SelectMany。
var data = CategoryA.CategoryB
.Where(b => b.CategoryBObjectId == someBid)
.SelectMany(b => b.CategoryC)
.Where(c => c.CategoryCObjectId == someCid)
.ToList();
答案 1 :(得分:1)
当你得到类别b时,你似乎已经得到了分类
因此,我想这样搜索
var ls2= ls.Where(x=>x.Any(y=>y.CategoryC.CategoryCObjectId==someAnotherID))
答案 2 :(得分:0)
在您的第二个查询中存在问题,您再次从categoryB过滤值。 你的第二个查询需要像这样。
var ls2= ls.CategoryC.Where(x => x.CategoryBObjectId == someId);