C# 如何在对象列表中获取组合?

C# 如何在对象列表中获取组合?,c#,list,combinations,C#,List,Combinations,我有一个对象列表: List<classname> mylist=new List<classname>(); public class classname { public String test { set; get; } public String name { set; get; } public String value{ set; get; } } 我需要得到每个组合都有一个值列表的组合,比如 test1, name1, value

我有一个对象列表:

List<classname> mylist=new List<classname>();

public class classname
{
    public String test { set; get; }
    public String name { set; get; }
    public String value{ set; get; }
}
我需要得到每个组合都有一个值列表的组合,比如

test1, name1, value1
test2, name1, value1
test3, name1, value3

每个组合都应该包含来自
test1
test2
test3
的一行。看起来您希望按classname.name进行分组,在这种情况下,您可以这样做

void Main()
{
    List<classname> mylist=new List<classname>()
    {
        new classname { test = "test1", name = "name1", value = "value1" },
        new classname { test = "test1", name = "name2", value = "value2" },
        new classname { test = "test2", name = "name1", value = "value1" },
        new classname { test = "test2", name = "name1", value = "value3" },
        new classname { test = "test2", name = "name3", value = "value3" },
        new classname { test = "test3", name = "name4", value = "value4" }
    };

    var groups = mylist.GroupBy(x => x.name);
    foreach(var group in groups)
    {
        // name property value
        //Console.WriteLine(group.Key);
        foreach(var row in group)
        {
            // unique rows for this "name" group
            Console.WriteLine($"{row.test} {group.Key} {row.value}");
        }
        Console.WriteLine();
    }
}

public class classname
{
    public String test { set; get; }
    public String name { set; get; }
    public String value{ set; get; }
}

这个问题还不清楚。请格式化它,并提供一个真实的编译数据结构示例。。这将使您更容易理解您是否真的想要这些“testX”值的第一项?是的gilad我需要testX值的第一项组合应包含test1以及test2和Test3是的out必须是一个包含三个对象的列表
void Main()
{
    List<classname> mylist=new List<classname>()
    {
        new classname { test = "test1", name = "name1", value = "value1" },
        new classname { test = "test1", name = "name2", value = "value2" },
        new classname { test = "test2", name = "name1", value = "value1" },
        new classname { test = "test2", name = "name1", value = "value3" },
        new classname { test = "test2", name = "name3", value = "value3" },
        new classname { test = "test3", name = "name4", value = "value4" }
    };

    var groups = mylist.GroupBy(x => x.name);
    foreach(var group in groups)
    {
        // name property value
        //Console.WriteLine(group.Key);
        foreach(var row in group)
        {
            // unique rows for this "name" group
            Console.WriteLine($"{row.test} {group.Key} {row.value}");
        }
        Console.WriteLine();
    }
}

public class classname
{
    public String test { set; get; }
    public String name { set; get; }
    public String value{ set; get; }
}
test1 name1 value1
test2 name1 value1
test2 name1 value3

test1 name2 value2

test2 name3 value3

test3 name4 value4