LINQ在Line属性更新过程中加入 [英] LINQ In Line Property Update During Join

查看:149
本文介绍了LINQ在Line属性更新过程中加入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个obects,A和B代表本次讨论。我可以通过一个公共关系或外键连接这些对象(表)。我使用LINQ做到这一点加入,我只是想在我的结果集返回对象A;不过,我想在加入让更新ObejctA与来自对象B数据的属性,我得到了我的LINQ查询的ObjectAs是从所选择的存储介质,其原始状态稍微不同。



下面是我的查询,你可以看到,我只是想能像做objectA.SomeProperty = objectB.AValueIWantBadly



我知道我可以做一个新的我的选择并旋转起来的新OBjectAs,但我想避免,如果可能,简单地更新一个字段。

 从对象A中GetObjectAs()返回
加入对象b在GetObjectBs()上objectA.Id
等于objectB.AId
//更新对象A与对象前b数据选择它
选择对象A;


解决方案

添加更新方法您ClassA的



 类ClassA的{
公共ClassA的UpdateWithB(ClassB的对象b){
//执行更新
返回此;
}
}



然后用


$从对象A中GetObjectAs)b $ b

 ()返回
在GetObjectBs参加对象b(上objectA.Id
等于objectB.AId
//选择它
选择objectA.UpdateWithB(对象b)前更新对象b数据对象A;

修改



或者使用一个本地的lambda功能,如:

  Func键< ClassA的,ClassB的,ClassA的> F =((A,B)=> {a.DoSomethingWithB(二);返回;});从对象A中GetObjectAs 
()返回
在GetObjectBs参加对象B()上objectA.Id
等于objectB.AId
选择F(对象A,对象A);


I have two obects, A & B for this discussion. I can join these objects (tables) via a common relationship or foreign key. I am using linq to do this join and I only want to return ObjectA in my result set; however, I would like to update a property of ObejctA with data from ObjectB during the join so that the ObjectAs I get out of my LINQ query are "slightly" different from their original state in the storage medium of choice.

Here is my query, you can see that I would just like to be able to do something like objectA.SomeProperty = objectB.AValueIWantBadly

I know I could do a new in my select and spin up new OBjectAs, but I would like to avoid that if possible and simply update a field.

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;

解决方案

Add an update method to your ClassA

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

then use

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

EDIT:

Or use a local lambda function like:

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

这篇关于LINQ在Line属性更新过程中加入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆