Ope*_*ack 4 .net c# asp.net merge concat
我有两个classe
Class One{
int id;
string name;
int total;
int val2;
int level;
}
Class Two{
int id;
string name;
string parentName;
int parentId;
int level;
}
Run Code Online (Sandbox Code Playgroud)
class One包含有关id,name和一些数字字段的信息.另一方面,第二类包含id,名称(包含与第一类中相同的数据),但它也包含分层信息.喜欢谁是当前节点的父级和级别信息(在一级中可用)
我需要根据Id字段合并这两个类并产生如下结果:
class Three{
int id;
string name;
string parentName;
int parentId;
int level;
int total;
int val2;
}
Run Code Online (Sandbox Code Playgroud)
在C#中获得所需结果的最有效方法是什么?如果列表相同,我们可以使用Concat方法.
您可以使用LINQ的Join()方法:
List<One> l1 = .... // your source list of One
List<Two> l2 = .... // your source list of Two
List<Three> =
l1
.Join(
l2,
x1 => x1.id,
x2 => x2.id,
(x1, x2) => new Three
{
id = x1.id,
name = x1.name,
parentName = x2.parentName,
parentId = x2.parentName,
level = x1.level,
total = x1.total
val2 = x1.val2
})
.ToList();
Run Code Online (Sandbox Code Playgroud)
这结合了基于相等ids 的两个源列表的元素.其结果是列表Three结合的匹配情况下的值创建的实例One和Two.