【发布时间】:2020-12-07 04:17:06
【问题描述】:
我有这些功能
public static IEnumerable<IEnumerable<T>> GetPermutations<T>(IEnumerable<T> items, int count)
{
int i = 0;
foreach (var item in items)
{
if (count == 1)
yield return new T[] { item };
else
{
foreach (var result in GetPermutations(items.Skip(i + 1), count - 1))
yield return new T[] { item }.Concat(result);
}
++i;
}
}
public static List<List<int>> GetAllValidCombinations(List<int> items)
{
var finalList = new List<List<int>>();
switch (items.Count)
{
case 1:
finalList.Add(items);
break;
case 3:
finalList.AddRange(GetPermutations(items, 2));
finalList.AddRange((List<List<int>>)GetPermutations(items, 3));
break;
}
return finalList;
}
我想从 GetAllValidCombinations 获取一个 List。
在第一行 GetAllValidCombinations 的情况 3 中,我得到:
错误 CS1503 参数 1:无法从 'System.Collections.Generic.IEnumerable
如果我尝试第二行我得到错误 Specified cast is not valid
我怎样才能在一行中做到这一点?
【问题讨论】:
-
finalList.AddRange(GetPermutations(items, 2).Select(x => x.ToList()));
标签: c# casting enumerable