Hca*_*tek 17 c# linq collections
我有IQueryable<someClass>baseList
和List<someOtherClass>someData
我想要做的是更新baseList中的一些项目中的属性.
对于someData中的每个项目,我想在baselist中找到相应的项目并更新项目的属性.
someOtherClass.someCode == baseList.myCode
我可以使用Linq进行某种类型的连接并设置baseList.someData + = someOtherClass.DataIWantToConcantenate.
我可以通过迭代来做到这一点,但有一种花哨的Linq方式,我可以在几行代码中做到这一点吗?
感谢任何提示,〜在圣地亚哥
dah*_*byk 18
要在两个列表中配对元素,可以使用LINQ连接:
var pairs = from d in someData
join b in baseList.AsEnumerable()
on d.someCode equals b.myCode
select new { b, d };
Run Code Online (Sandbox Code Playgroud)
这将为您someData提供与其对应项配对的每个项目的枚举baseList.从那里,你可以循环连接:
foreach(var pair in pairs)
pair.b.SomeData += pair.d.DataIWantToConcantenate;
Run Code Online (Sandbox Code Playgroud)
如果你真的想要设置连接而不是+=,请看看LINQ的Union,Intersect或Except方法.
Jon*_*eet 12
LINQ用于查询 - 不用于更新.这意味着使用LINQ查找相应的项目会很好,但是对于修改,您应该使用迭代.
不可否认,您可能希望执行一些适当的查询以baseList首先进入有效的表单 - 例如,Dictionary<string, SomeClass>基于您将用于查找相应项目的属性.
| 归档时间: |
|
| 查看次数: |
28751 次 |
| 最近记录: |