我尝试将两个集合合二为一。如果我的第二个是空的,我只需要一个空值,这是我的代码(如果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
答案 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);