新手linq用户,但是prim_clus_list& ref_clus_list是List和ref_clus& prim_clus是字符串。我尝试执行以下操作,但它无法正常工作。
string[] clus_list = prim_clus_list.Union(ref_clus_list).Union(ref_clus.ToList()).Union(prim_clus.ToList()).ToArray<string>();
如何在一行中完成此操作?我希望他们都在一个列表中,没有重复。
CS1928:&#39; System.Collections.Generic.IEnumerable&#39;不包含&#39; Union&#39;的定义和最好的扩展方法重载&#39; System.Linq.Queryable.Union(System.Linq.IQueryable,System.Collections.Generic.IEnumerable)&#39;有一些无效的论点
此外,这一切正常:
string[] clus_list = prim_clus_list.Union(ref_clus_list).ToArray<string>();
答案 0 :(得分:2)
使用.Append
方法将单个项目追加到IEnumerable
var result = prim_clus_list.Append(ref_clus)
.Append(prim_clus)
.Union(ref_clus_list)
.ToArray();
将Union
放在链的末尾以摆脱重复。
答案 1 :(得分:0)
这就是你需要的:
var prim_clus_list = new List<string>() { "A", "B" };
var ref_clus_list = new List<string>() { "C", "D" };
var ref_clus = "E";
var prim_clus = "F";
string[] clus_list =
prim_clus_list
.Union(ref_clus_list)
.Union(new [] { ref_clus })
.Union(new [] { prim_clus })
.ToArray<string>();
这给出了:
A B C D E F
基本上ref_clus.ToList()
会返回List<char>
,但new [] { ref_clus }
会返回IEnumerable<string>
,可以与.Union
一起使用。