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)?