加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何从linq查询的所有项目设置属性,并从另一个也从查询中

发布时间:2020-12-15 06:36:38 所属栏目:百科 来源:网络整理
导读:我从数据库中提取了一个查询: ListmyClass items = new ListmyClass(from i in context select new myClass { A = i.A,B = "",// i doesn't know this,this comes from elsewhere C = i.C } 我也有另一个查询做类似的事情: ListmyClass2 otherItems = new
我从数据库中提取了一个查询:
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本身中应用副作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读