C# Linq离散运算

C# Linq离散运算,c#,linq,C#,Linq,列表表包含重复元素,如何改善这种情况,并使用linq在新列表员工中复制数据而不重复 例如,输出必须类似于: List<Employee> employee = new List<Employee>(); employee.Add(new Employee { Name = "Jhon", components = new List<Component> { new Componen

列表
包含重复元素,如何改善这种情况,并使用linq在新列表
员工
中复制数据而不重复

例如,输出必须类似于:

List<Employee> employee = new List<Employee>();
employee.Add(new Employee
    {
        Name = "Jhon",
        components = new List<Component>
        {
            new Component { id = "4", work = "clear" },
            new Component { id = "10", work = "load" },
            new Component { id = "5", work = "convert"},
         }
     });
List employee=new List();
employee.Add(新员工)
{
Name=“Jhon”,
组件=新列表
{
新组件{id=“4”,work=“clear”},
新组件{id=“10”,work=“load”},
新组件{id=“5”,work=“convert”},
}
});
但是如何使用linq实现呢

代码:

类程序
{
静态void Main(字符串[]参数)
{
列表=新列表();
table.Add(新表{Name=“Jhon”,id=“4”,work=“clear”});
table.Add(新表{Name=“Jhon”,id=“10”,work=“load”});
table.Add(新表{Name=“Jhon”,id=“5”,work=“convert”});
table.Add(新表{Name=“Nick”,id=“2”,work=“load”});
table.Add(新表{Name=“Nick”,id=“7”,work=“load”});
table.Add(新表{Name=“Nick”,id=“9”,work=“load”});
}
}
公营员工
{
公共字符串名称{get;set;}
公共列表组件{get;set;}
}
公共类组件
{
公共字符串id{get;set;}
公共字符串工作{get;set;}
}
公共类表
{
公共字符串名称{get;set;}
公共字符串id{get;set;}
公共字符串工作{get;set;}
}

此LINQ语句将生成所需的输出:

List<Empoloyee> employee = table
    .GroupBy(t => t.Name)
    .Select(t => new Empoloyee() { 
        Name = t.Key, 
        components = t.Select(s => new Component() { 
            id = s.id, 
            work = s.work 
        })
        .ToList()
    })
    .ToList();
List employee=table
.GroupBy(t=>t.Name)
.Select(t=>newempoloyee(){
Name=t.Key,
components=t.Select(s=>newcomponent(){
id=s.id,
工作
})
托利斯先生()
})
.ToList();

此LINQ语句将生成所需的输出:

List<Empoloyee> employee = table
    .GroupBy(t => t.Name)
    .Select(t => new Empoloyee() { 
        Name = t.Key, 
        components = t.Select(s => new Component() { 
            id = s.id, 
            work = s.work 
        })
        .ToList()
    })
    .ToList();
List employee=table
.GroupBy(t=>t.Name)
.Select(t=>newempoloyee(){
Name=t.Key,
components=t.Select(s=>newcomponent(){
id=s.id,
工作
})
托利斯先生()
})
.ToList();

我想您需要按使用名称对组件进行分组

        List<Table> table = new List<Table>();
        table.Add(new Table { Name = "Jhon", id = "4", work = "clear" });
        table.Add(new Table { Name = "Jhon", id = "10", work = "load" });
        table.Add(new Table { Name = "Jhon", id = "5", work = "convert" });
        table.Add(new Table { Name = "Nick", id = "2", work = "load" });
        table.Add(new Table { Name = "Nick", id = "7", work = "load" });
        table.Add(new Table { Name = "Nick", id = "9", work = "load" });

        var employee =  table.GroupBy(t => t.Name)
            .Select(g => new Empoloyee() {Name = g.Key, components = g.Select(t => new Component {id = t.id, work = t.work} ).ToList()})
            .ToList();
List table=新列表();
table.Add(新表{Name=“Jhon”,id=“4”,work=“clear”});
table.Add(新表{Name=“Jhon”,id=“10”,work=“load”});
table.Add(新表{Name=“Jhon”,id=“5”,work=“convert”});
table.Add(新表{Name=“Nick”,id=“2”,work=“load”});
table.Add(新表{Name=“Nick”,id=“7”,work=“load”});
table.Add(新表{Name=“Nick”,id=“9”,work=“load”});
var employee=table.GroupBy(t=>t.Name)
.Select(g=>newempoloyee(){Name=g.Key,components=g.Select(t=>newcomponent{id=t.id,work=t.work}).ToList())
.ToList();

我想您需要按使用名称对组件进行分组

        List<Table> table = new List<Table>();
        table.Add(new Table { Name = "Jhon", id = "4", work = "clear" });
        table.Add(new Table { Name = "Jhon", id = "10", work = "load" });
        table.Add(new Table { Name = "Jhon", id = "5", work = "convert" });
        table.Add(new Table { Name = "Nick", id = "2", work = "load" });
        table.Add(new Table { Name = "Nick", id = "7", work = "load" });
        table.Add(new Table { Name = "Nick", id = "9", work = "load" });

        var employee =  table.GroupBy(t => t.Name)
            .Select(g => new Empoloyee() {Name = g.Key, components = g.Select(t => new Component {id = t.id, work = t.work} ).ToList()})
            .ToList();
List table=新列表();
table.Add(新表{Name=“Jhon”,id=“4”,work=“clear”});
table.Add(新表{Name=“Jhon”,id=“10”,work=“load”});
table.Add(新表{Name=“Jhon”,id=“5”,work=“convert”});
table.Add(新表{Name=“Nick”,id=“2”,work=“load”});
table.Add(新表{Name=“Nick”,id=“7”,work=“load”});
table.Add(新表{Name=“Nick”,id=“9”,work=“load”});
var employee=table.GroupBy(t=>t.Name)
.Select(g=>newempoloyee(){Name=g.Key,components=g.Select(t=>newcomponent{id=t.id,work=t.work}).ToList())
.ToList();

您需要的是按名称分组

var results = table.GroupBy(t=>t.Name)
            .Select( s=> new Empoloyee() {
                Name = s.Key,
                components= s.Select(c=> new Component() { id = c.id, work = c.work}).ToList()
            }).ToList();

工作

您需要的是按名称分组

var results = table.GroupBy(t=>t.Name)
            .Select( s=> new Empoloyee() {
                Name = s.Key,
                components= s.Select(c=> new Component() { id = c.id, work = c.work}).ToList()
            }).ToList();

工作

您想要的输出是什么?这些对象在我看来都不是重复的。你的意思是一个名称应该只出现一次吗?定义
唯一性
。绝对不相关,但我很想指出它
Employee
可能应该是
Employee
。您想要的输出是什么?这些对象在我看来都不是重复的。你的意思是一个名称应该只出现一次吗?定义
唯一性
。绝对不相关,但我很想指出它
Employee
可能应该是
Employee
。但是如何复制Employee中与上一个表中的名称相关的元素(id,work)?但是如何复制Employee中与上一个表中的名称相关的元素(id,work)?