c# – LINQ to Objects加入两个集合以设置第一个集合中的值

我有以下实体框架查询:

var results = from r in db.Results
              select r;

我使用AutoMapper映射到另一个类型:

var mapped = Mapper.Map<IEnumerable<Database.Result>, IEnumerable<Objects.Result>>(results);

在我的Objects.Result类型中,我有一个不属于数据库的名为reason的属性.它来自另一个来源,我需要基本上填充回我的映射类型:

var reasons = new List<Reason>
{
    new Reason { Id = 1, Reason = "asdf..." }
};

我需要加入我的映射集合的原因,并使用我的原因集合中的值在我的映射集合中设置Reason属性.这可能吗?

 // need something like this:
 mapped = from m in mapped
          join r in reasons on m.Id equals r.Id
          update m.Reason = r.Reason
          select m;

显然上面的代码没有编译,但是是否可以编写代码,这样做是我想要的?

在循环中进行突变.最好的是,Linq应该没有突变,它的反应集合.使用Linq过滤,订购,投影数据,使用传统技术进行修改.

var joinedData = from m in mapped 
                 join r in reasons on m.Id equals r.Id 
                 select new { m, r };

foreach (var item in joinedData)
{
    item.m.Reason = item.r.Reason;
}
翻译自:https://stackoverflow.com/questions/8127430/linq-to-objects-join-two-collections-to-set-values-in-the-first-collection

转载注明原文:c# – LINQ to Objects加入两个集合以设置第一个集合中的值