• C# 中奇妙的函数之ToL“.NET研究”ookup 狼人:


      我将和大家一起来学学C#中上海闵行企业网站设计与制作一些非常有用函数,对于有些人来说可能它们不起眼,因此常常忽略它们。它们不会嚷嚷到:使用我吧!我会让你节省很多的时间,而且让你的代码变得更加的简洁! -- 但是,这些话会从对它们熟悉的程序员的脑海中涌现出来。

      好的!先来看看ToLookup:

      故事的背景

      让我们先来创建一个简单的类来表示产品,产品有ID,类别,和价格,这个类没有什么特别:

      

      然后我们加入一个函数得到一个产品的列表,当然你也可以从数据库中读取出来:

     

      我们有一个任务就是按类别列出一个物品清单,这个非常的容易,用GroupBy 就可以实现了:

     

      看起来一切都很好,没有什么问题.

      当我们使用 GroupBy() 扩展方法时,使用了延迟执行。 这意味着,当你遍历集合的时候,下一个要出现的项目可能会或者可能不会被加载。 这是一个很大的性能改进,但它会引起有趣的副作用。

      在用 GroupBy()时,  它实际上是在第一项被使用的时候创建分组,而不是在 GroupBy() 第一次被调用时。

      考虑一下:如果你从数据库中加载数据,然后想组合到一起,并存储快速查找。  看下面的一段代码:

     

      执行后发现,所有的Garden产品都已经消失了,但是 groups 是在执行删除命令前就已经赋值了。

      基于这种情况,我们不得不使用ToDictionary() 将GroupBy 后的结果储存起来,这样一来工作量就增加了,而且维护也不太方便 -- 请大家试试。

      ToLookup登场

      现在我们有请ToLookup。

      该 ToLookup() 方法创建一个类似 字典(Dictionary ) 的列表List, 但是它是一个新的 .NET Collection 叫做 lookup。 Lookup,不像Dictionary, 是不可改变的。 这意味着一旦你创建一个lookup, 你不能添加或删除元素。

     
     

      你还可以使用类似索引的功能得到某个项目,在本案例中是得到某个类别的所有产品:

     

      结论

      ToLookup() 是一个奇妙的函数,用于对一个集合进行操作,创建一个1:n 的映射。 它可以方便的将数据分类成组,并生成一个字典供查询使用。

    声明:此博有部分内容为转载,版权归原作者所有~
  • 相关阅读:
    Bareword "mp4" not allowed while "strict subs" in use at (usersupplied code). ubuntu
    linux系统中如何删除空行
    linux系统中comm命令的用法
    Package libxml2.0 was not found in the pkgconfig search path
    ubuntu qt.qpa.xcb: could not connect to display
    R语言中管道运算符 %>%
    R语言中setdiff、intersect、union函数
    poly 定点于mesh定点的法线对其,非开做比较好,要是来回转很费时间, 界面还打伤元气
    rollout floater 界面的加减。
    看了脚本后才知道是怎么把三边转四边。
  • 原文地址:https://www.cnblogs.com/waw/p/2218081.html
Copyright © 2020-2023  润新知