c# - LINQ-从包含三层的列表中检索对象的第三层列表

标签 c# linq

我有一个如下所示的类结构。

   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 查询?

最佳答案

使用 SelectMany。

var data = CategoryA.CategoryB
    .Where(b => b.CategoryBObjectId == someBid)
    .SelectMany(b => b.CategoryC)
    .Where(c => c.CategoryCObjectId == someCid)
    .ToList();

关于c# - LINQ-从包含三层的列表中检索对象的第三层列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29934610/

相关文章:

c# - WPF路径碰撞检测?

c# - 无法转换 COM 对象

c# - 如何正确对齐 SHELLSTATE 结构的字段?

c# - MongoDB .NET 驱动程序按时间范围分组

c# - 无法在 linq 查询中将类型字符串转换为十进制

c# - 将代码放在依赖属性的 setter block 中是否安全,还是我应该始终使用回调方法?

c# - 在没有PageOrientation LandscapeRight/LandscapeLeft之前如何知道页面的方向?

c# - 如何使用 C# 在 .Net 中的类型对象列表中选择对象属性的所有值

c# - LINQ 过滤和聚合

c# - 检查 LINQ 查询中的 Var 是否为 Null 并返回早于 x 的值