如何将 Linq 的查询结果转为 HashSet ?
咨询区
Jamie:
我的类中有一个 ISet
类型的属性,我想将 linq 查询的结果赋给它,因为是 ISet 类型,所以我不知道是否有高效的方法将 linq 查询结果给之?
简单来说,就像下面这样:
ISet<T> foo = new HashedSet<T>();
foo = (from x in bar.Items select x).SOMETHING;
我在寻找 SOMETHING
这块该如何替代。
回答区
Jon Skeet:
我觉得 .NET 没有任何内部支持也没关键,大不了自己实现一个扩展方法就好,参考如下代码:
public static class Extensions
{public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source,IEqualityComparer<T> comparer = null){return new HashSet<T>(source, comparer);}
}
有了扩展方法,接下来就可以这么用了。
var query = from i in Enumerable.Range(0, 10)select new { i, j = i + 1 };
var resultSet = query.ToHashSet();
除了用扩展方法,其实你也可以用 HashSet<T>
构造函数,比如下面这样。
var query = from i in Enumerable.Range(0, 10)select new { i, j = i + 1 };
var resultSet = new HashSet<int>(query);
Douglas:
你所说的 ToHashSet
扩展方法在 .NET Framework 4.7.2 和 .NET Core 2.0 中已经支持了。
public static HashSet<TSource> ToHashSet<TSource>(this IEnumerable<TSource> source)
{return source.ToHashSet(null);
}public static HashSet<TSource> ToHashSet<TSource>(this IEnumerable<TSource> source, IEqualityComparer<TSource> comparer)
{if (source == null){ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source);}return new HashSet<TSource>(source, comparer);
}
可以看到,内部也是用 构造函数
的方式进行转换的。
点评区
其实在很多年前,我就在考虑为什么有 ToList, ToDictionary
方法而没有 ToHashSet,ToQueue,ToStack
,后来我想了下,可能程序员在这一块使用频次太低吧,不过现在加进来了,给它点个赞!
如何将 Linq 的查询结果转为 HashSet ?相关推荐
- 谁说LINQ复杂查询不支持返回实名类型~复杂结果集中再使用复杂结果集
下面代码主要是从一个复杂结果集中进行一个查询,在查询中使用的结果集还是一个复杂结果集. 什么是复杂结果集? 这是我给它的定义,它是由多张表进行关联查询后,生成的新的对象结果集或者原来结果集.如下图所示 ...
- python怎么检查数据库实例能否链接_python pymysql链接数据库查询结果转为Dataframe实例...
我就废话不多说了,大家还是直接看代码吧! import pymysql import pandas as pd def con_sql(db,sql): # 创建连接 db = pymysql.con ...
- 将oracle select * from all_tab_comments where comments like ‘%XXXX%‘查询结果转为select语句
oracle查询表格的时候会有一句 select * from all_tab_comments where comments like '%XXXX%' 就能查到相关注释的一些表格,这些表格有时候很 ...
- LINQ标准查询操作符
本文基于.NET Framework 2.0编写 本文PDF下载 推荐大家下载本文的PDF进行阅读,可以方便的使用书签来阅读各个方法,而且代码中的关键字是高亮显示的. 转载请注明出处. 一.投影操作符 ...
- NHibernate3剖析:Query篇之NHibernate.Linq标准查询
本节内容 系列引入 NHibernate.Linq概述 标准查询运算符 结语 系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Sessi ...
- Laravel分页设置与查询构造器查询数据集转为数组
分页设置 //从第一条开始查询(不包含第一条数据),查询10条数据. User::offset(1)->limit(10)->get(); 查询数据集转为数组 $data = DB::ta ...
- LinQ高级查询、组合查询
LinQ高级查询.组合查询 LinQ高级查询: 1.模糊查询(包含) Repeater1.DataSource = con.car.Where(r =>r.name.Contains(s)).T ...
- LINQ 的查询执行何时是延迟执行,何时是立即执行,以及查询的复用
延迟执行的经典例子: 我们用 select ++i 就可以看到在foreach 时候,查询才被执行. public static void Linq99() { int[] numbers = ...
- 一起谈.NET技术,NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询
系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Session策略篇.应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种 ...
最新文章
- QT绘制具有向下钻取效果的园饼图
- C++ 字符串编程训练2
- java 并发包之 LongAdder 源码分析
- Oracle分析函数一——函数列表
- (16)css背景属性常用应用场景
- c语言答案纪纲,重庆理工大学C语言程序设计基础教程习题答案(纪纲金艳).doc
- WMI 查询分析工具更新
- C++之priority_queue
- 矩阵转置相关公式_线性代数入门——矩阵的转置运算及对称矩阵的概念
- lammps教程:原子平动和振动的设置方法
- linux dig命令
- 有趣的人工智能项目合集,如老婆生成器
- 计算机蓝屏原因原理,蓝屏炸弹
- 计算机毕业设计jsp社区养老服务管理系统
- PCB layout的基本原则
- 【推荐系统】User-Item CF:GC-MC
- nnU-Net论文笔记
- linux系统宝塔安装nodejs,node安装,nodejs安装,Windows nodejs安装,Linux nodejs安装
- C语言中的指数函数pow()问题
- 手机屏幕xy坐标软件_软件工程中的xy问题
热门文章
- 看了《OCP/OCA认证考试指南全册:Oracle Database 11g(1Z0-051,...
- WPF基础到企业应用系列7——深入剖析依赖属性(三)
- Linux下查看文件内容的ASCII码以检查内容的编码一致
- 增加新分类daily——“每天学了啥?”
- Mac使用crontab来实现定时任务
- Fiddler进行模拟Post提交json数据,总为null解决方式
- Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...
- 不知道为什么IList.Contains()总是返回FALSE
- 如何在Instagram上过滤冒犯性评论
- windows7黑屏修复_如何在Windows 10更新后修复黑屏