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是空的
基本上你想要的是一个左外连接。你可以使用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);