Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对象列表的Linq联合列表(属性)

对象列表的Linq联合列表(属性)
EN

Stack Overflow用户
提问于 2013-04-13 13:14:29
回答 2查看 2.1K关注 0票数 0

我有两门课,个人和团体

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person {
    public virtual ICollection<Group> GroupsWhereIAmMember { get; set; }
    public virtual ICollection<Group> GroupsWhereIAmSender { get; set; }
}

class Group {
    public virtual ICollection<Person> Members { get; set; }
    public virtual ICollection<Person> Senders { get; set; }
}

给定一个person实例p,,如何获得属于p是发件人的组的所有人员?

方式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List<Person> results = new List<Person>();

foreach (Group group in p.GroupsWhereIAmSender)
{
     results.AddRange(group.Members);
}

但是我想用“linq到实体”的方式来做,这样我就不会耗尽内存。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-13 13:24:59

使用SelectMany

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
results = p.GroupsWhereIAmSender.SelectMany(g => g.Members);
票数 1
EN

Stack Overflow用户

发布于 2013-04-13 14:42:13

“linq到对象”的方法是按照已经建议的方式使用SelectMany,而“linq到实体”的方式也是使用SelectMany,但是有一个DataContext作为源(确切地说,是IQueryable )。

在这两种情况下,表达式都是:p.GroupsWhereIAmSender.SelectMany(g => g.Members) (您可能希望向结果中添加Distinct,以避免重复的值)。

“linq到对象”和“linq到实体”之间的区别在于,“linq到实体”使用IQueryable和一个表达式树,可以在运行时转换为that。这样,就可以在底层数据库上进行筛选和排序,而不是将所有内容加载到内存中。

但是,您的代码没有显示出存在DataContext的任何提示。所以我得假设你所有的数据都在内存里。因此,您不会耗尽内存,因为SelectMany不会加载/生成新数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15993027

复制
相关文章
dotnet 列表 Linq 的 Task 用法
在 dotnet 可以使用 Take 获取指定数量的元素,获取顺序是从前向后,而获取到的数量是小于等于传入的指定数量。如数组中元素的数量小于传入的指定数量,则返回数组中的所有元素。如果数组中元素的数量大于等于传入的数量,则按照数组或列表顺序返回指定数量的元素
林德熙
2019/10/17
8330
dotnet 列表 Linq 的 Take 用法
在 dotnet 可以使用 Take 获取指定数量的元素,获取顺序是从前向后,而获取到的数量是小于等于传入的指定数量。如数组中元素的数量小于传入的指定数量,则返回数组中的所有元素。如果数组中元素的数量大于等于传入的数量,则按照数组或列表顺序返回指定数量的元素
林德熙
2022/08/12
4790
CSS——属性列表
尺寸 元素描述版本heightheight 规定元素内容区高度。1max-heightmax-height 规定元素设置最大高度。2max-widthmax-width 规定元素设置最大宽度。2min-heightmin-height 规定元素设置最小高度。2min-widthmin-width 规定元素设置最小宽度。2widthwidth规定元素内容区的宽度。1 边距 元素描述版本marginmargin规定元素中四个方向的外边距属性。1margin-bottom设置元素的下外边距。1margin-le
Html5知典
2019/11/26
2.5K0
​ExcelVBA-FSO对象模型-Files属性(提取文件列表)
ExcelVBA-FSO对象模型-Folder对象-Files属性(提出文件列表)
哆哆Excel
2022/10/25
1.3K0
​ExcelVBA-FSO对象模型-Files属性(提取文件列表)
前端基础-CSS列表属性
应用场景:通常在网页中,使用的列表都是要去除前面的符号,并且去除左边和上边的空间,所以,样式如下:
cwl_java
2020/04/07
7030
前端基础-CSS列表属性
基于业务对象(列表)的排序
在上一篇文章 基于业务对象的筛选 中,我们讨论了如何实现Predicate<T>(T object)委托,自定义DateFilter 类来对业务对象进行筛选。与筛选一样,排序也是常见且重要的操作。在对业务对象进行排序时,不能使用ObjectDataSource作为数据源,因为它只对 DataView、DataTable 和 DataSet 支持自动排序。但你仍可以对GridView编写Sorting事件的处理方法,通过拼装SQL语句,使用“Order By”子句来完成排序。
张子阳
2018/09/30
1.9K0
基于业务对象(列表)的筛选
可能大家对SQL语句太过熟悉了,也可能虽然已经从Asp过度到了Asp.Net时代,但是Asp的观念没有发生太大变化。结果就是我们将应用程序大部分的逻辑都交给了数据库去完成,忘记了.Net Framework提供给我们灵活强大的数据操控能力。比如说,当我们需要对数据进行筛选的时候,我们想到的是“Where”子句,而不是List<T>.FindAll();当我们需要对数据进行排序的时候,我们想到的是“Order By”子句,而不是List<T>.Sort();当我们需要对数据进行分页的时候我们想到的是存储过程,而不是List<T>.GetRange()。
张子阳
2018/09/30
1.9K0
基于业务对象(列表)的筛选
css列表属性和样式控制
如下图是360浏览器主页的内容,上边有导航,下边是新闻列表,这种布局很常见,今天就来学习css列表属性之后并制作它。
呆呆
2021/09/29
1K0
Python列表对象实现原理
新媒体管家 关键时刻,第一时间送达! Python中的列表基于PyListObject实现,列表支持元素的插入、删除、更新操作,因此PyListObject是一个变长对象(列表的长度随着元素的增加和删除而变长和变短),同时它还是一个可变对象(列表中的元素根据列表的操作而发生变化,内存大小动态的变化)。 PyListObject的定义: 咋一看PyListObject对象的定义非常简单,除了通用对象都有的引用计数(ob_refcnt)、类型信息(ob_type),以及变长对象的长度(ob_size)之外,
企鹅号小编
2018/02/01
1.4K0
Python列表对象实现原理
css列表属性和样式控制
如下图是360浏览器主页的内容,上边有导航,下边是新闻列表,这种布局很常见,今天就来学习css列表属性之后并制作它。
呆呆
2021/11/26
1.2K0
Java 如何提取列表中对象某个属性值并去重
在 Java 中,有时候需要从一个对象列表中提取某个属性值,并去除重复的值。本文将介绍两种方式来实现这个操作。
高久峰
2023/10/26
2.2K0
python 如何增加列表对象
Updated List : 123, 'xyz', 'zara', 'abc', 2009
用户8418197
2022/01/21
1.4K0
python python列表对象复制
赋值后的对象内存地址不同,但是列表内对象地址相同。 如果修改新列表内的数组对象,老列表同步修改。 如果修改列表内的数值对象,老列表不变。
葫芦
2019/08/21
1.2K0
vue列表渲染(数组和对象)
简单看一下列表渲染(数组列表) 数组列表渲染     < div id="app">         <div v-for="(item,index) in list">             {{item}}-----{{index}}         </div>     </div>     <script>         var app=new Vue({             el:"#app",             data:{                 list:["吃饭",
十月梦想
2018/10/09
3.3K0
JS根据列表排列对象数组
] const sortInfo = ['f','c','b'] nodeData_.sort((a, b) => {
小仙女闯运维
2020/09/23
4.5K0
列表:创建列表
列表是Tcl语言中最重要的一种数据结构。什么是列表?列表是元素的有序集合,各个元素可以包含任何字符串,例如空格,反斜杠,换行符等。列表表现为特定结构的字符串,这意味着可以把它们赋值给一个变量,可以把它们做为参数传给命令,可以把它们嵌套到其他列表中。
Lauren的FPGA
2019/10/30
2.4K0
List列表按照对象进行排序
本文介绍了如何根据传入的排序字段,对List列表中的对象进行排序。首先介绍了排序字段及排序规则,然后通过一个实例展示了如何使用该方法,最后给出了通用的排序工具方法。
程序新视界
2018/01/08
1.4K0
Redis源码学习之列表对象
列表对象的底层实现可以是【压缩列表】或者【双端链表】,Redis会通过用户对于压缩列表单个节点值长度(list_max_ziplist_value)和键值对个数(list_max_ziplist_entries)的配置进行选择。
里奥搬砖
2018/11/14
7910
Redis学习笔记02-列表对象
使用双端链表作为底层实现,每个双端链表节点(Node)都保存了一个字符串对象,而每个字符串对象都保存了一个列表元素。
WindCoder
2020/01/22
4250
iOS操作属性列表plist(增删改查)
iOS的存储方式之一——属性列表plist,还是经常见到的,可以很方便的用来管理一些有序的批量数据,特别是用来显示固定的内容到表单上时,不需要在代码中反复地繁琐编写数组,而可以在plist属性列表中进行可视化操作,极为便捷,本文讲解如何创建和使用plist列表,并显示在表单上。
Cloudox
2021/11/23
1.6K0
iOS操作属性列表plist(增删改查)

相似问题

使用Linq的联合列表

40

基于对象属性列表的Linq筛选列表

47

使用LINQ使用其他列表更新对象属性列表

10

两个列表的linq联合

22

使用对象的对象列表属性的LINQ查询

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文