Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq创建字典的替代实现_C#_Linq - Fatal编程技术网

C# 使用Linq创建字典的替代实现

C# 使用Linq创建字典的替代实现,c#,linq,C#,Linq,我有一个片段如下。基本上,我想从我目前拥有的系列中创建一本词典。如果我做了很长的路,没有问题,代码运行良好,我得到了预期的结果 class Program { static void Main(string[] args) { List<int> series = new List<int>() { 1,2,3,4 }; Dictionary<int, List<int>> D = new Dict

我有一个片段如下。基本上,我想从我目前拥有的系列中创建一本词典。如果我做了很长的路,没有问题,代码运行良好,我得到了预期的结果

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();
     }
}
类程序
{
静态void Main(字符串[]参数)
{
列表系列=新列表(){1,2,3,4};
字典D=新字典();
foreach(系列var项目)
{
D.添加(项目、系列和系列(项目));
}
}
带有INSERIES的公共静态列表系列(int seed)
{
返回可枚举的.Range(0,seed).Where(x=>x
如何将其转换为Linq?我试过这个:

D = series.Select(x=> { return new (x,seriesWithinSeries(x));}).ToDictionary<int,List<int>>();
D=series.Select(x=>{returnnew(x,seriesWithinSeries(x));}.ToDictionary();
但是编译器抱怨我需要一个新的类型,这很有意义。然而,我真的不知道如何修复它。请帮助。

没有无参数版本。你可能想要这个:

var result = series.ToDictionary(x => x, x => seriesWithingSeries(x));
所以这里不需要匿名类型。但是为了完整的解释,这里有一个正确的语法:


var d=系列。ToDictionary(项目=>item,项目=>SeriesWithinSeries(项目))@user1205746作为记录,您的错误实际上与LINQ没有任何关系;创建匿名类型的语法有问题,该类型与LINQ完全不同,即使它们经常一起使用。@user1205746如果确实希望对其中的数据进行排序,则需要。如果您想以排序方式访问它,那么
result.OrderByDescending(x=>x.Key)
将按照您的要求执行。再次感谢BartoszKP。我发现SortedDictionary,这就是为什么我删除了我的后续问题,但我不知道我们也可以按x键降序。。。谢谢你,非常感谢!!我真的不需要SortedDictionary,但我认为这是唯一的排序方法……结果发现这对我来说太过分了
var result = series
    .Select(x => new { Key = x, Value = seriesWithinSeries(x) })
    .ToDictionary(pair => pair.Key, pair => pair.Value);