2015-06-03 4 views
0

Я пытаюсь объединить две коллекции в одну. Если мой второй пуст мне просто нужно нулевое значение, вот мой код (это верно, если com не пусто)Linq, join и null, как проверить значение

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 пусто

+0

http://stackoverflow.com/a/4739738/397817 По умолчаниюIfEmpty()? –

ответ

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); 
+0

Спасибо, это прекрасно. –

Смежные вопросы