Linq,join和null如何检查值

时间:2015-06-03 11:07:35

标签: c# linq windows-store-apps

我尝试将两个集合合二为一。如果我的第二个是空的,我只需要一个空值,这是我的代码(如果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) ou AnswerSet(g, null)当com为空时问题是g.Key equals c.UserID

1 个答案:

答案 0 :(得分:6)

基本上你想要的是left outer join。您可以使用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);