gpt4 book ai didi

c# - LINQ to Objects 连接两个集合以在第一个集合中设置值

转载 作者:IT王子 更新时间:2023-10-29 04:38:10 25 4
gpt4 key购买 nike

我有以下 Entity Framework 查询:

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;
}

关于c# - LINQ to Objects 连接两个集合以在第一个集合中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com