C# Linq加入克隆
我有一个对象序列,它的类型有很多属性,我想把它和另一个序列连接起来,并从第二个序列中设置一个值。但是因为有很多属性,我不喜欢通过所有这些属性赋值来创建一个新的匿名类型。是否有更好的方法在单个linq查询中实现这一点(已经使用let成功尝试过了) 我需要一个像legalTerms这样的序列,其中的项目有一个从legalEntities更新的属性 希望有一种方法可以克隆le并设置一个属性c=le.c而不使用反射等 基本上,这就是我想在linq声明中可能出现的情况C# Linq加入克隆,c#,linq,C#,Linq,我有一个对象序列,它的类型有很多属性,我想把它和另一个序列连接起来,并从第二个序列中设置一个值。但是因为有很多属性,我不喜欢通过所有这些属性赋值来创建一个新的匿名类型。是否有更好的方法在单个linq查询中实现这一点(已经使用let成功尝试过了) 我需要一个像legalTerms这样的序列,其中的项目有一个从legalEntities更新的属性 希望有一种方法可以克隆le并设置一个属性c=le.c而不使用反射等 基本上,这就是我想在linq声明中可能出现的情况 foreach (v
foreach (var lt in legalTerms)
{
foreach (var le in legalEntities)
{
if (le.Code == lt.LegalEntityCode)
{
lt.LegalEntity = le.Name;
}
}
}
这个怎么样
var map = new Func<LegalTerm, LegalEntity, LegalTerm>((term, entity) =>
{
term.LegalEntity = entity.Name;
return term;
});
var query = from lt in legalTerms
join le in legalEntities
on lt.Code equals le.LegalEntityCode
select map(lt, le);
这个怎么样
var map = new Func<LegalTerm, LegalEntity, LegalTerm>((term, entity) =>
{
term.LegalEntity = entity.Name;
return term;
});
var query = from lt in legalTerms
join le in legalEntities
on lt.Code equals le.LegalEntityCode
select map(lt, le);
“从第二个序列中设置一个值”是什么意思?您希望看到的替代方案是什么,而不是进行所有这些属性赋值?您所说的“克隆
le
并设置一个属性”是什么意思?这意味着第一个序列中的项没有初始化该属性,因此根据连接条件,我使用第二个序列中的项设置值,因此与匿名序列无关。您只想将le
中的一些值分配给lt
实例?什么是“设置从第二个序列中获取的值”意思?您希望看到的替代方法是什么,而不是进行所有这些属性分配?什么是“克隆le
并设置一个属性”?这意味着第一个序列中的项没有初始化该属性,因此根据连接条件,我使用第二个序列中的项设置值,因此与匿名序列无关。您只想将le
中的一些值分配给lt
实例?
public class LegalTerm
{
public string Code { get; set; }
public string LegalEntity { get; set; }
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
public string d { get; set; }
}
public class LegalEntity
{
public string LegalEntityCode { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}