代码之家  ›  专栏  ›  技术社区  ›  Ganesha

需要Linq的帮助

  •  1
  • Ganesha  · 技术社区  · 14 年前

    我有一个这样的示例类:

    SampleClass
    {
        string code;
        int id;
        string name;    
    }
    

    类的有效数据为:

    SampleClass{code= "code1", id= 1, name= "name1"}
    SampleClass{code= "code1", id= 1, name= "name2"}
    SampleClass{code= "code2", id= 2, name= "name1"}
    SampleClass{code= "code2", id= 2, name= "name2"}
    SampleClass{code= "code2", id= 2, name= "name3"}
    

    现在的问题是,通过使用LINQ,我需要创建一个分组在SampleClass“id”字段上的TestClass集合。

    TestClass
    {
        string code;        
        List<string> names;    
    }
    

    基于上面的SampleClass示例数据,我将拥有两个TestClass对象,一个用于id=1,另一个用于id=2

    提前谢谢

    3 回复  |  直到 14 年前
        1
  •  3
  •   Alastair Pitts    14 年前

    好吧,如果您有一个名为 classes

            var testClasses = classes
                .GroupBy(c => c.id)
                .Select(grp => new TestClass
                {
                    code = grp.First().code,
                    names = grp.Select(c => c.name).ToList()
                });
    
        2
  •  3
  •   zerkms    14 年前
    var result = from c in collection
                 group c by c.id into g
                 select new TestClass {
                                          code = g.First().code,
                                          names = g.Select(i => i.name).ToList()
                                      };
    

    ps:我现在没有VS了,希望我没有犯太多的错误

        3
  •  2
  •   davisoa    14 年前

    MSDN有一些很棒的LINQ示例,包括使用分组来完成您需要的工作。你可以找到一个例子,做一些你想做的事情 here .