NET问答: 说说你对 LookupTKey, TElement 的看法 ?

咨询区

  • dan-gph

MSND 上对 Lookup 做了如下的解释。

Lookup<TKey, TElement> 类似于 Dictionary<TKey,TValue>, 不同点在于 Dictionary<TKey, TValue> 中的key对应的是单个value,而 Lookup<TKey, TElement> 中的 key 对应的是一个 value集合

我觉得这个解释等于没解释,请问 Lookup 的用途在哪里?

回答区

  • bobbymcr

你可以把 Lookup<TKey, TElement>Dictionary<TKey, Collection<TElement>> 看作是等价的,很明显后者通过 key 可以返回与之匹配的 list 集合。


namespace LookupSample
{using System;using System.Collections.Generic;using System.Linq;class Program{static void Main(string[] args){List<string> names = new List<string>();names.Add("Smith");names.Add("Stevenson");names.Add("Jones");ILookup<char, string> namesByInitial = names.ToLookup((n) => n[0]);// count the namesConsole.WriteLine("J's: {0}", namesByInitial['J'].Count()); // 1Console.WriteLine("S's: {0}", namesByInitial['S'].Count()); // 2Console.WriteLine("Z's: {0}", namesByInitial['Z'].Count()); // 0, does not throw}}
}

点评区

相信很多人对 Lookup 不是很理解,我初学时也没搞特别清楚,真不知道 Lookup 是出自哪里的术语,不过没关系,没听过 Lookup,总听过 GroupBy 吧,对,就是关系型数据库中用到的 group by,这两者是等价的,只不过又造了一个新名词而已,不信的话,我写个例子给你看看。

static void Main(string[] args){var nums = new int[] { 1, 2, 3, 3 };//使用 lookupILookup<int, int> query = nums.ToLookup(t => t);foreach (IGrouping<int, int> item in query){var key = item.Key;var list = item.ToList();Console.WriteLine($"lookup : key={key}, value={string.Join(",", list)}");}Console.WriteLine($"\r\n  -------------- \r\n");//使用 groupIEnumerable<IGrouping<int, int>> query2 = nums.GroupBy(t => t);foreach (IGrouping<int, int> item in query2){var key = item.Key;var list = item.ToList();Console.WriteLine($"groupby : key={key}, value={string.Join(",", list)}");}Console.ReadLine();}

从结果看,两者都做了相同的事情,仔细观察代码,你会发现在 foreach 的迭代项 item 都是 IGrouping<int, int> 类型,接下来就有一个疑问了,query 还能被 foreach 吗?这个要看 ILookup<int, int> 的内部迭代类是怎么写的了,翻一下代码看看。


public class Lookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, IEnumerable, ILookup<TKey, TElement>
{public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator(){Grouping g = lastGrouping;if (g != null){do{g = g.next;yield return g;}while (g != lastGrouping);}}
}

看到没有,迭代类返回的类型 IEnumerator<IGrouping<TKey, TElement>> 不正是做 GroupBy 的 query2 类型 IEnumerable<IGrouping<int, int>> 嘛 ~~~

如果你要不懂 sql 的 group by, 那就当我没说哈 ????????????

原文链接:https://stackoverflow.com/questions/1403493/what-is-the-point-of-lookuptkey-telement

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最多金的编程语言Top10:Python第3,R第10,你猜第1是谁?

导读&#xff1a;如果你还在纠结选哪门编程语言来开启你的码农生涯&#xff0c;这将是你的最佳指南。本文绝非标题党&#xff0c;而是基于大量数据和为期两周的深入探究&#xff0c;在18年初&#xff0c;对IT行业的现状、趋势以及预测进行客观观察&#xff0c;让大家对编程语言…

[转贴]制作windows 2003自动安装盘-集成补丁/Raid及硬件驱动

从事网游行业的工作人员&#xff0c;如果一款游戏上线&#xff0c;必须上大量服务器。用品牌机引导盘装系统&#xff0c;再打个补丁&#xff0c;速度真让人不敢恭维。为了提高效率&#xff0c;就尝试制作一张集成系统补丁/RAID及硬件驱动自动安windows 2003系统盘。下面以品牌机…

4月 .NET 线上 Meetup,快来报名

点击蓝字关注我们.NET 6 preview 2 在3月11日已经发布&#xff0c;.NET 6 将是 .NET Core 3.1 之后的第一个 LTS 版本&#xff0c;也是微软开启全平台统一一个 .NET 计划以来的第一个 LTS 版本&#xff0c;意义不可谓不大&#xff0c;那么 .NET 5/6 又会带来哪些新特性呢&#…

NP完全性理论与近似算法

一、图灵机根据有限状态控制器的当前状态及每个读写头读到的带符号&#xff0c;图灵机的一个计算步可实现下面3个操作之一或全部。改变有限状态控制器中的状态。清除当前读写头下的方格中原有带符号并写上新的带符号。独立地将任何一个或所有读写头&#xff0c;向左移动一个方格…

php文件上传实验总结,53 PHP文件处理(六)文件上传--总结---细说php

前台表单设计,表单view.html,提交给upload.php一.表单view.htmlphp配置文件和上传文件有关选项&#xff0c;注意几点:php.inifile_uploadsonupload_max_filesize2M 此值最大不超过服务器内存upload_tmp_dirc:/uploads 到时要拷贝出来post_max_size25M 要大于upload_max_fil…

CentOS 5.6 快速搭建LAMP

在虚拟机下安装了个CentOS&#xff0c;5.6版本的。利用NAT模式与宿主pc共享上网&#xff01; 当然可以采用编译源码的方式搭建lamp。这里只是介绍快速搭建php开发框架的方法。其实也没什么&#xff0c;主要是是是使用linux的yum来在线安装。如果上不了网请查找编译lamp的文…

阿里25k 百度25k,招WPF!

.NET5打通7大开发方向&#xff0c;CLR超高性能&#xff0c;.NET6支持Blazor嵌入WPF&#xff0c;还有MAUI跨平台UI解决方案&#xff0c;都是.NET的利好&#xff0c;也是WPF的利好。牛年跳槽季&#xff0c;.NET在客户端方向一骑绝尘&#xff0c;阿里影视、百度地图&#xff0c;以…

php转译html,使用php转义输出HTML到JavaScript

最近在做天地图是GIS集成要输出HTML到JavaScript里面涉及到代码转义什么的比较麻烦所以写个PHP的function分享一下&#xff1a;function jsformat($str){$str trim($str);$str str_replace(\\s\\s, \\s, $str);$str str_replace(chr(10), , $str);$str str_replace(chr(13)…

掌握神经网络模型的快捷方式

TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统&#xff0c;其命名来源于本身的运行原理。Tensor&#xff08;张量&#xff09;意味着N维数组&#xff0c;Flow&#xff08;流&#xff09;意味着基于数据流图的计算&#xff0c;TensorFlow实际上就是张量从流…

Visual Entity 手册(十一)代码生成设置

NHibernate 代码生成设置&#xff08;仅选取比较难理解的选项&#xff09; 一、DataContext 设置选项 1、Auto-Implemented Properties 设为 True 时&#xff0c;生成自动属性&#xff0c;如下&#xff1a; public partial class Category{public virtual int CategoryID { get…

.Net项目模板(Project Template)

你有没有这样的感觉&#xff0c;开启一个新项目时&#xff0c;总是做一堆体力活——项目的结构层次&#xff0c;常用日志库&#xff0c;OpenAPI库&#xff0c;ORM库&#xff0c;的引入&#xff0c;权限认证方式选择添加&#xff0c;配置文件重新归置存放等等。公共框架的部分总…

php导出数据库的指定表数据,MYSQL教程mysql数据库导出指定表数据的方法

《MYSQL教程mysql数据库导出指定表数据的方法》要点&#xff1a;本文介绍了MYSQL教程mysql数据库导出指定表数据的方法&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。导读&#xff1a;linux下导出mysql中指定表数据 &#xff1a;MYSQLdump -uroot -p databas…

谈通过测试与失败测试

在软件测试技术中&#xff0c;现有的测试方法、测试技术中均未提及到通过测试与失败测试。 而在实际项目测试过程中&#xff0c;很多项目组却再应用该方法。虽然该方法被采用&#xff0c;但是很多人对通过测试与失败测试理解并不透侧&#xff0c;在实际使用过程中并未按统一的标…

100个微信小程序的源码公开分享

现在微信小程序越来越火&#xff0c;小编一直有意识地收集微信小程序源码&#xff0c;至今已经拥有100个小程序的源码&#xff0c;有gank、LOL战绩查询、百度小说、豆瓣电影、手势解锁等。现在&#xff0c;小编准备将这些资料免费分享给大家&#xff01;gankLOL战绩查询百度小说…

NET问答:什么场景下应该选择 struct 而不是 class ?

咨询区 Esteban Araya&#xff1a;MSDN 上说当你需要一个轻量级对象时应该选择 struct&#xff0c;说的含含糊糊&#xff0c;真的不知道有哪些场景下优先选择 struct 而不是 class。可能有些人已经忘了。struct 可以有方法。struct 不能被继承。我非常明白 struct 和 class 在技…

php类的的属性值,PHP面向对象之旅:类的属性

在PHP5中&#xff0c;在属性定义可以不设置初值&#xff0c;或者赋予以下红色类型的初值。PHP中简单类型有8种&#xff0c;分别是&#xff1a;数值类型boolean 布尔类型integer 整型float 浮点型&#xff0c;也称为 double 双精度浮点型string 字符串复合类型array 数组object …

淘宝快捷通道——百汇家园

百汇家园 是一个便捷的通道&#xff0c;喜欢网购的同学&#xff0c;都可以在百汇家园了解到所需要的相关 产品的信息。我们的商品分为15个大类&#xff0c;包含了淘宝所有的商品&#xff0c;满足你的购物 需求。 百汇家园通过与淘宝的网店合作&#xff0c;将淘宝优质商品&#…

家里在一二线城市有很多套房是什么体验?答案太颠覆!

作者&#xff1a;匿名来源&#xff1a;知乎&#xff08;图片&#xff1a;网络&#xff09;“家里在一二线城市有很多套房是怎么的一种体验&#xff1f;”这是知乎上一个浏览超600万的话题。其中一个答案非常颠覆&#xff0c;获得高赞。作者的观点是否正确见仁见智&#xff0c;但…

希尔排序听起来有点难,其实很简单

前言直接插入排序当待排序数据的顺序和期望排序结果相反时&#xff0c;排序效率是最差的&#xff1b;上次聊到的折半插入排序只是减少有序列表的比较次数&#xff0c;而对于整体数据遍历次数还是没有得到优化&#xff1b;接下来要说的希尔排序就是针对整体数据进行优化&#xf…

中小企业信息化,“轻”和“快”是方向

中小企业有着自身的特殊性&#xff0c;在观念改变和专业服务产品到位后&#xff0c;中小企业轻装上阵&#xff0c;实现高效办公、快捷管理、快速发展的愿望并不遥远。 时间刚过早上七点&#xff0c;韩信吃完早餐&#xff0c;便坐到沙发上看起了新闻&#xff0c;查看手机日历也是…