Dictionary<TKey, TValue>只为每个键支持一个值。新类Lookup<TKey, TElement>是.NET 3.5中新增的,它类似于Dictionary<TKey, TValue>,但把键映射到一个值集上。这个类在程序集System.Core中实现,用System.Linq命名空间定义。

  Lookup<TKey, TElement>不能像一般的字典那样创建,而必须调用方法ToLookup(),它返回一个Lookup<TKey, TElement>对象。

  方法ToLookup()是一个扩展方法,可以用于实现了IEnumerable<T>的所有类。

  在下面的例子中,填充了一列Racer对象。List<T>实现了IEnumerable<T>,所以可以在赛手列表上调用方法ToLookup()。这个方法需要一个Func<TSource, TKey>类型的委托,Func<TSource, TKey>类型定义了键的选择器。这里使用 表达式r=>r.Country,根据国家来选择赛手。Foreach循环只使用索引器访问来自奥地利的赛手,代码如下:

List < Racer > racers = new List < Racer > ();
racers.Add(new Racer("Jacques", "Villeneuve",
"Canada", ));
racers.Add(new Racer("Alan", "Jones",
"Australia", ));
racers.Add(new Racer("Jackie", "Stewart",
"United Kingdom", ));
racers.Add(new Racer("James", "Hunt",
"United Kingdom", ));
racers.Add(new Racer("Jack", "Brabham",
"Australia", )); Lookup < string, Racer > lookupRacers =
(Lookup < string, Racer > )
racers.ToLookup(r = > r.Country); foreach (Racer r in lookupRacers["Australia"])
{
Console.WriteLine(r);
}

结果显示出来自奥地利的赛手:

Alan Jones
Jack Brabham

分组数据类型IGrouping接口:

namespace System.Linq
{
public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable
{
TKey Key { get; }
}   public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, IEnumerable
{
IEnumerable<TElement> this[TKey key] { get; }
int Count { get; }
bool Contains(TKey key);
}
}

参考

  [1] book.51cto.com,Lookup类

最新文章

  1. js性能优化-事件委托
  2. webform 之LINQde 简单操作
  3. Java8简单的本地缓存实现
  4. 判断客户浏览器是否支持cookie
  5. redis 和 bloom filter
  6. second blog编程之美------控制cpu曲线
  7. Java 理论与实践: 非阻塞算法简介--转载
  8. css 图片平铺
  9. 【线段树】【4-6组队赛】Problem H
  10. Python学习笔记——进阶篇【第九周】———MYSQL操作
  11. Windows 2003】利用域&amp;&amp;组策略自动部署软件
  12. ConcurrentHashMap和HashTable的区别
  13. JMS Cluster modules
  14. python之路--第一类对象,函数名,变量名
  15. git的使用命令
  16. 搭建Modelsim SE仿真环境-使用do文件仿真
  17. 5.STM32通用定时器TIM3中断
  18. loj 10117 简单题(cqoi 2006)
  19. Perl 获得当前路径
  20. Linux下U盘、SD卡挂载与卸载

热门文章

  1. kubelet tls
  2. Jetson TX2
  3. MapReduce面试题
  4. T-SQL行列相互转换命令:PIVOT和UNPIVOT使用详解
  5. 5. RDD编程进阶
  6. dubbo中使用动态代理
  7. idea多级目录不展开的问题
  8. MES系统之设备管理的基础功能
  9. java第三次面试总结
  10. win10 查看本机的激活秘钥