好的我正在为另一个SO问题找到答案,我想出了以下函数来获得一个明确的int列表:
static List<Int32> Example(params List<Int32> lsts)
{
List<Int32> result = new List<int>();
foreach (var lst in lsts)
{
result = result.Concat(lst).ToList();
}
return result.Distinct().OrderBy(c => c).ToList();
}
当我在VS2012中查看var
时,它会显示Int32
类型而不是List<Int32>
。如图所示:
var不应该是List<Int32>
??
答案 0 :(得分:9)
您在参数类型声明的末尾缺少[]
:
// v-- this is missing in your code
static List<Int32> Example(params List<Int32>[] lsts)
{
List<Int32> result = new List<int>();
foreach (var lst in lsts)
{
result = result.Concat(lst).ToList();
}
return result.Distinct().OrderBy(c => c).ToList();
}
答案 1 :(得分:5)
你被另一个编译错误误导了 您的参数不是数组。
您需要将参数更改为params List<Int32>[] lsts
以使其成为列表数组。 (或者,更好的是,params IEnumerable<Int32>[] lsts
)
请注意,您还可以完全摆脱foreach
循环并编写
return lsts.SelectMany(list => list)
.Distinct()
.OrderBy(i => i)
.ToList();
答案 2 :(得分:0)
关键字params
的参数必须是数组。