如何使用Linq获得此分组结果

pal*_*now 0 c# linq

我有一个类Foo如下.

public class Foo
{
    public string Name { get; set; }
    public string Value { get; set; }   
}
Run Code Online (Sandbox Code Playgroud)

我有一个这个类的集合让我们说List,有时我在集合中有如下数据.

 Name           Value   
Jimmy           hello   
Jimmy           World   
Peter           how  
Peter           are you?   
Suzanne         I am fine

我想将相同名称的值字段组合为folows

Name            Value  
Jimmy           hello World  
Peter           how are you?  
Suzanne         I am fine  

无论如何,这可以使用Linq完成吗?

McG*_*gle 7

您可以使用Linq GroupBy如下:

fooCollection.GroupBy(foo => foo.Name)

    // create a new "Foo" object based on each grouping
    .Select(g => new Foo() { 

        // "Name" becomes the group key (ie, "Jimmy", "Peter", etc)
        Name = g.Key, 

        // "Value" becomes the Value for all Foo in this group, concatenated
        Value = string.Join(" ", g.Select(item => item.Value).ToArray()) 
    })
    .ToArray();
Run Code Online (Sandbox Code Playgroud)