繁体   English   中英

Linq group by 具有可为空的属性。 无法跳过子列表中的 object

[英]Linq group by with nullable property. unable to skip the object in child list

我有一个带有 2 个参考类 ID 的表。 如果它们不是 null,我想对 ChildClass 2 属性进行分组并在列表中添加子 class3。 我无法做到如何将 null 检查以不在列表中添加 null 项目

var groupData = await _context.Class1
            .Where(ct => ct.Id == Id                
            && ct.C2 != null )
            .Select(h => new { h.Class2.F1, h.Class2.F2,  h.Class3 }
            ).ToListAsync();
        var result = groupData.GroupBy(g => new { g.F1, g.F2 }).Select(h => new MyResult
        {
            F1 = h.Key.F1,
            F2 = h.Key.F2            
            F4List = h.Select(x =>new MyModel
            {
                C5F1 = x.Class3.F1,
                C5F2 = x.Class3.F2,
                C5F3 = x.Class3.F3,                
            }).ToList()
            
        }).ToList();

试过

以下但它在列表中添加 null 项目而不是跳过这些记录

var groupData = await _context.Class1
            .Where(ct => ct.Id == Id                
            && ct.C2 != null )
            .Select(h => new { h.Class2.F1, h.Class2.F2,  h.Class3 }
            ).ToListAsync();
        var result = groupData.GroupBy(g => new { g.F1, g.F2 }).Select(h => new MyResult
        {
            F1 = h.Key.F1,
            F2 = h.Key.F2            
            F4List = h.Select(x => x.Class3 != null ? new MyModel
            {
                C5F1 = x.Class3.F1,
                C5F2 = x.Class3.F2,
                C5F3 = x.Class3.F3,                
            }: null).ToList()
            
        }).ToList();

class1 类似于

public class Class1
{
int Id
int class2ID
int? class3ID

virtual Class2
virtual Class3

}

请让我知道我错过了什么

如果要跳过 null 值,请使用 WHERE 子句:

F4List = h.Where( x => x.Class3 != null )
          .Select( x => new MyModel
            {
                C5F1 = x.Class3.F1,
                C5F2 = x.Class3.F2,
                C5F3 = x.Class3.F3,                
            })
          .ToList()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM