Linq、join和null如何检查一个值

本文关键字:一个 检查 null 何检查 Linq join | 更新日期: 2023-09-27 17:53:05

我尝试将两个集合合并为一个。如果我的第二个是空的,我只需要一个空值,这是我的代码(这是正确的,如果com不是空的)

    var tmp = List{ Elem {long UserID; string tmpContent} };
    var com = List{ Comment{long UserID; string Content} } ;
    var res = from t in tmp
              group t by t.UserID into g
              join c in com on g.Key equals c.UserID
              select new AnswerSet(new List<Answer>(g), c.Content);

我想得到AnswerSet(g, Content)AnswerSet(g, null)的问题,我猜,是g.Key equals c.UserID时,com是空的

Linq、join和null如何检查一个值

基本上你想要的是一个左外连接。你可以使用join into来代替join

var res = from t in tmp
          group t by t.UserID into g
          join c in com on g.Key equals c.UserID into j
          from subc in j.DefaultIfEmpty()
          select new AnswerSet(new List<Answer>(g), subc != null ?subc.Content : null);