我有两个列表:
List<L1>, List<L2>
L1 = { detailId = 5, fileName = "string 1" }{ detailId = 5, fileName = "string 2" }
L2 = { detailId = 5, fileName = "string 2" }{ detailId = 5, fileName = "string 3" }
我希望能将它们合并在一起,且不重复出现:
List<L3>
L1 = { detailId = 5, fileName = "string 1" }{ detailId = 5, fileName = "string 2" }{ detailId = 5, fileName = "string 3" }
我尝试过:
L1.Union(L2).ToList();
L1.Concat(L2).Distinct().ToList();
但是两者都会返回重复的值(1,2,2,3)。
不确定我错过了什么。
编辑 这是该方法。它从一个分隔字符串中获取一个列表,并尝试将它们合并。
private List<Files> CombineList(int detailId, string fileNames)
{
List<Files> f1 = new List<Files>();
List<Files> f2 = new List<Files>();
f1 = GetFiles(detailId, false);
if (f1[0].fileNames != "")
{
string[] names = fileNames.Split('|');
for (int i = 0; i < names.Length; i++)
{
Files x = new Files();
x.detailId = detailId;
x.fileNames = names[i];
f2.Add(x);
}
List<Files> f3 = f1.Union(f2).ToList();
}
return f3;
}
Union
使用默认的相等比较器。 - vladL1
和L2
上实现IEquatable<T>
。 - Steven