将两个可能为空的列表与linq组合
本文关键字:列表 组合 linq 两个 | 更新日期: 2023-09-27 18:21:41
我有两个列表:
var myIds = new List<int>()
{
1, 2, 3
};
var yourIds = new List<int>()
{
2, 3, 4
};
这两个列表可以组合成一个这样的列表:
myIds.Union(yourIds)
.Select(x => new
{
Id = x,
Mine = myIds.Contains(x),
Yours = yourIds.Contains(x)
});
新列表如下所示:
Id Mine Yours
---------------------
1 T F
2 T T
3 T T
4 F T
当列表中包含元素时,这非常有效。但是,如果列表有可能为空,该怎么办。我该如何处理空列表?
如果列表可以是null
,那么您必须检查null
。您也可以使用null合并运算符,如果任何列表是null
,则返回一个空列表(内部也会检查null)。
你可以做:
(mIds ?? Enumerable.Empty<int>()).Union(yourIds ?? Enumerable.Empty<int>())
(感谢@phoog评论)
但是IMO,最好检查null
但如果列表中有任何一个是空的,那么你不必进行任何检查,也不会有例外。即使两个列表都是空的,您也会得到一个空的结果。如果列表中的任何一个是null
,则上面的代码将返回一个空列表。