如何解决即使列表为空,如何连接3个列表?
我在连接3个列表时遇到问题,问题是它来自多选组合,因此即使它们为空,我也尝试将三个列表连接起来,但是“ concatenate”指令不适用于空列表,有人可以引导我。
if (model.Estatus.Count() < 3)
{
if (model.Estatus.Contains(2))
{
var aut = listaCompleta.Where(x => x.Autorizada == true).ToList();
listaAutorizada.Concat(listaCompleta.Where(x => x.Autorizada == true).ToList());
}
if (model.Estatus.Contains(3))
{
listaRechazada.Concat(listaCompleta.Where(x => x.Autorizada == false).ToList());
}
if (model.Estatus.Contains(4))
{
listaPendientes.Concat(listaCompleta.Where(x => x.Autorizada == null).ToList());
}
listaEstatus.Concat(listaAutorizada).Concat(listaRechazada).Concat(listaPendientes);
}
当列表为空时,它也会将结果列表也变为null。您还可以使用其他什么方法来合并这些列表?
解决方法
您需要使用以下代码检查是否为空:
?? Enumerable.Empty<theListType>()
因此您的代码应如下所示:
var result = (list1 ?? Enumerable.Empty<ListType>()).Concat(list2 ??
Enumerable.Empty<ListType>()).Concat(list3 ?? Enumerable.Empty<ListType>());
,
此方法可以在许多情况下使用:
class Program
{
static void Main()
{
var list1 = new List<string> { "bella","ci" };
var list2 = new List<string> { "bella","ci" };
List<string> list3 = null;
var result = ConcatLists(list1,list2,list3);
}
public static List<T> ConcatLists<T>(params List<T>[] lists)
{
var outputList = new List<T>();
foreach(var list in lists)
{
if (list != null)
outputList.AddRange(list);
}
return outputList;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。