嵌套ILookup - 参数ype错误

时间:2015-06-26 10:32:01

标签: c# .net grouping lookup

考虑以下对象:

class Menu{
    public int Section {get; set;}
    public string Parent {get; set;}
    public string Name {get; set;}
    public string Url {get; set;}
    /* more */
}

我正在获取这些对象的列表,我想按部分对它们进行分组,然后在每个部分内部我想按父进行分组,所以我使用了以下结构:

ILookup<int, ILookup<string, Menu>> MenuStructure = 
         menuList.ToLookup(m => m.Section, menuList.ToLookup(m => m.Parent));

但是我收到了这个错误:

  

Cannot implicitly convert type 'System.Linq.ILookup<int,MyNamespace.Menu>' to 'System.Linq.ILookup<int,System.Linq.ILookup<string,MyNamespace.Menu>>'. An explicit conversion exists (are you missing a cast?)

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要先添加一个分组.GroupBy()

ILookup<int, ILookup<string, Menu>> MenuStructure = 
        menuList.GroupBy(m => m.Section).ToLookup(g => g.Key, v => v.ToLookup(m => m.Parent));

否则内部的.ToLookup作用于整个列表,而不是第一个.ToLookup提供的列表

.net小提琴的完整代码:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    class Menu {
      public int Section {get; set;}
      public string Parent {get; set;}
      public string Name {get; set;}
      public string Url {get; set;}
    }

    public static void Main()
    { 
        var menuList = new List<Menu>();

        ILookup<int, ILookup<string, Menu>> MenuStructure = 
             menuList.GroupBy(m => m.Section).ToLookup(g => g.Key, v => v.ToLookup(m => m.Parent));
    }
}