[英]How to copy properties from one list to another using Linq conditionally
我有两个自定义对象列表。
两者都将DivisionId
作为通用属性。 每当Member.DivisionId = Divisions.DivisionId
时,我想使用Linq从List<Divisions>
复制两个参数PlanType
和CoverageType
到List<Members>
。
成员和部门对象如下:
public class Members
{
public string FirstName;
public string LastName;
public string DivisionId;
}
Public Class Divisions
{
public string PlanType;
public string CoverageType,
public string DivisionId;
}
谢谢
您描述的是加入
var query = from m in members
join d in divisions on m.DivisionId equals d.DivisionId
select new { m.FirstName,
m.LastName,
m.DivisionId,
d.CoverageType,
d.PlanType
};
如果要将项目从第一个列表的索引0复制到第二个列表的索引0,以此类推,对于所有其他索引,可以执行以下操作:
var pairs = members.Zip(divisions, (a, b) => new
{
Member = a,
Division = b,
});
foreach (var pair in pairs)
{
Copy(pair.Member, pair.Division);
}
如果索引不匹配,则需要进行联接:
var pairs = members.Join(divisions
, member => member.DivisionId
, division => division.DivisionId
, (a, b) => new
{
Member = a,
Division = b,
});
foreach (var pair in pairs)
{
Copy(pair.Member, pair.Division);
}
请注意,如果物品已经按照正确的顺序放置,则Zip
会更快。 Join将比Zip慢,但比手动重新排序项目以允许Zip
快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.