2

好的,我正在寻找另一个 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();
    }

当我var在 VS2012 中查看时,它说它的类型为Int32not List<Int32>。此处显示:

问题

var 不应该是 typeList<Int32>吗?

4

3 回答 3

9

[]在参数类型声明的末尾缺少 a :

//                                            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();
}
于 2012-11-22T13:55:06.043 回答
5

您被另一个编译器错误误导了。
您的参数不是数组。

您需要更改参数以params List<Int32>[] lsts使其成为列表数组。(或者,更好的是,params IEnumerable<Int32>[] lsts

请注意,您也可以完全摆脱foreach循环并编写

return lsts.SelectMany(list => list)
           .Distinct()
           .OrderBy(i => i)
           .ToList();
于 2012-11-22T13:53:54.100 回答
0

带关键字的参数params必须是数组。

于 2012-11-22T13:57:34.257 回答