LINQ在Line属性更新过程中加入 [英] LINQ In Line Property Update During Join
问题描述
我有两个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屋!