在加入期间LINQ在线属性更新

JPr*_*ers 15 c# linq

我有两个对象A&B进行讨论.我可以通过公共关系或外键加入这些对象(表).我使用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;
Run Code Online (Sandbox Code Playgroud)

Mar*_*ner 25

为您的ClassA添加更新方法

class ClassA {
  public ClassA UpdateWithB(ClassB objectB) {
    // Do the update
    return this;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后用

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);
Run Code Online (Sandbox Code Playgroud)

编辑:

或使用本地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 );
Run Code Online (Sandbox Code Playgroud)