c# – 如何从linq查询的所有项目设置属性,并从另一个也从查询中提取的对象的值进行设置?

前端之家收集整理的这篇文章主要介绍了c# – 如何从linq查询的所有项目设置属性,并从另一个也从查询中提取的对象的值进行设置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我从数据库提取了一个查询
List<myClass> items = new List<myClass>(from i in context
                      select new myClass
                      {
                          A = i.A,B = "",// i doesn't know this,this comes from elsewhere
                          C = i.C
                      }

我也有另一个查询做类似的事情:

List<myClass2> otherItems = new List<myClass2>(from j in context
                            select new myClass2
                            {
                                A = j.A,// A is the intersection,there will only be 1 A here but many A's in items
                                B = j.B
                            }

实际上,这些类更大,查询数据不仅由数据库而且由服务器分开.对于item.A相交的所有项目,是否可以使用LINQ查询来填充属性B.所有内置的LINQ谓词仅显示聚合,选择或bool表达式.

在我的大脑里,我有这样的东西,但这是全部的:

items.Where(x => x.B = (otherItems.Where(z => z.A == x.A).Single().B));

或者,我很乐意尝试在LINQ中进行这项工作,并且应该放弃它,赞成一个循环,其中实际设置变得微不足道?由于截止日期,我将使用for循环(而且长期来看,它可能最终会变得更加易读),但是可以这么做吗?需要一个扩展方法添加一个特殊的谓词来允许这个吗?

解决方法

LINQ专为查询而设计.如果你想设置东西,你一定要使用一个循环(可能是foreach).这并不意味着您将无法使用LINQ作为该循环的一部分,但您不应该尝试在LINQ本身中应用副作用.

猜你在找的C#相关文章