Linq集团由lambda表达

时间:2012-06-13 09:37:53

标签: c# linq lambda

我有Model关注列表:

    Id                  Name
----------------------------------------------------
    1                   john
    1                   john
    1                   john
    2                   jennifer
    2                   jennifer
    3                   smith

我想将Model分组以显示以下结果

    Id                  Name
----------------------------------------------------
    1                   john
    2                   jennifer
    3                   smith

3 个答案:

答案 0 :(得分:3)

如果Model实施IEquatable<Model>,那么它很简单:

var noDuplicates = list.Distinct();

如果Model实现该接口没有意义,您可以使用Distinct {{1}}来{J},它允许您指定侧面的相等条件。 this overload的文档中有一个关于如何实现此类文档的示例。

答案 1 :(得分:0)

                ILookup<int, string> lookup =
                list
                .ToLookup(p => p.Id,
                          p => p.Name);

            foreach (IGrouping<int, string> group in lookup)
            {
                Console.WriteLine(group.Key);
                foreach (string name in group)
                    Console.WriteLine("    {0}", name);
            }

答案 2 :(得分:0)

来自模型中的v 将v。v.id分组为g 选择g