我有一个片段如下。基本上我想从我现在的系列中创建一本字典。如果我做了很长的路,没有问题,代码运行良好,我得到了预期的结果。
class Program
{
static void Main(string[] args)
{
List<int> series = new List<int>() { 1,2,3,4 };
Dictionary<int, List<int>> D = new Dictionary<int,List<int>>();
foreach (var item in series)
{
D.Add(item, seriesWithinSeries(item));
}
}
public static List<int> seriesWithinSeries(int seed)
{
return Enumerable.Range(0, seed).Where(x => x < seed).ToList();
}
}
如何将其转换为Linq?我试过这个:
D = series.Select(x=> { return new (x,seriesWithinSeries(x));}).ToDictionary<int,List<int>>();
但编译器抱怨我需要一个新的类型,这是有道理的。但是,我真的不知道如何解决它。请帮忙。
答案 0 :(得分:2)
ToDictionary
没有无参数版本。你可能想要这个:
var result = series.ToDictionary(x => x, x => seriesWithingSeries(x));
这里不需要匿名类型。但是为了完整的解释,这里有一个anonymous type的正确语法:
var result = series
.Select(x => new { Key = x, Value = seriesWithinSeries(x) })
.ToDictionary(pair => pair.Key, pair => pair.Value);