gpt4 book ai didi

c# - 加入期间的 LINQ 在线属性更新

转载 作者:可可西里 更新时间:2023-11-01 07:52:28 24 4
gpt4 key购买 nike

我有两个对象,A 和 B 用于此讨论。我可以通过公共(public)关系或外键连接这些对象(表)。我正在使用 linq 来执行此连接,我只想在我的结果集中返回 ObjectA;但是,我想在连接期间使用来自 ObjectB 的数据更新 ObejctA 的属性,以便我从 LINQ 查询中获得的 ObjectAs 与其在所选存储介质中的原始状态“略有”不同。

这是我的查询,您可以看到我只是希望能够执行类似 objectA.SomeProperty = objectB.AValueIWantBadly 的操作

我知道我可以在我的选择中做一个新的并启动新的 OBjectAs,但我想尽可能避免这种情况并简单地更新一个字段。

return from objectA in GetObjectAs()
join objectB in GetObjectBs()
on objectA.Id equals objectB.AId
// update object A with object B data before selecting it
select objectA;

最佳答案

为您的 ClassA 添加更新方法

class ClassA {
public ClassA UpdateWithB(ClassB objectB) {
// Do the update
return this;
}
}

然后使用

return from objectA in GetObjectAs()
join objectB in GetObjectBs()
on objectA.Id equals objectB.AId
// update object A with object B data before selecting it
select objectA.UpdateWithB(objectB);

编辑:

或者使用本地 lambda 函数,例如:

Func<ClassA, ClassB, ClassA> f = ((a,b)=> { a.DoSomethingWithB(b); return a;});
return from objectA in GetObjectAs()
join objectB in GetObjectBs()
on objectA.Id equals objectB.AId
select f(objectA , objectA );

关于c# - 加入期间的 LINQ 在线属性更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709560/

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