gpt4 book ai didi

linq - 在 linq to sql select 期间更新一个属性值(涉及 join)

转载 作者:行者123 更新时间:2023-12-04 04:46:34 24 4
gpt4 key购买 nike

好的,我已经看到许多基于他们的文本的问题可能是这样的,但不完全是这样。说我有这样的事情

(from r in reports
join u in SECSqlClient.DataContext.GetTable<UserEntity>()
on r.StateUpdateReportUserID equals u.lngUserID
select r).

如果报告有一堆说 reportDTO 类,我想从该 DTO 的列表中进行选择,但同时将一个属性设置为 userEntity 中的一个属性,我该怎么做?基本上我希望维护报告上的所有其他字段,但从用户表中设置一个用户名。 (在获取报告列表的大查询中未完成此操作是有原因的)

我正在寻找的是类似于 Select r).Something(SOME LAMBDA TO SET ONE FIELD TO userEntity property)。

最佳答案

有一种肮脏的方法可以做到这一点,那就是

var repQuery = from r in reports ... select new { r, u };
var reps = repQuery.Select(x => { x.r.Property1 = x.u.Property1; return x.r; };

然而,当谈到函数式编程(Linq 可以说是)时,我喜欢坚持它的原则,其中之一是防止函数中的副作用。副作用是函数体外部的状态变化,在本例中是属性值。

另一方面,这是一个有效的要求,所以我要么使用 ForEach将查询转换为列表后的方法 ( ToList() )。 Foreach预计会产生副作用。或者我会在 IEnumerable<T> 上写一个明确命名的扩展方法(例如 DoForAll )做同样的事情,但以一种延迟的方式。见 Why there is no ForEach extension method on IEnumerable? .

关于linq - 在 linq to sql select 期间更新一个属性值(涉及 join),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18082819/

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