首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何保留IEnumerable "orderby“值,即使在执行多个切换用例之后也是如此

在C#中,IEnumerable接口是用于表示一个可枚举的集合。当我们使用IEnumerable进行排序时,可以使用orderby关键字来指定排序的字段。然而,默认情况下,IEnumerable的排序是惰性执行的,也就是说,当我们对IEnumerable进行多次操作时,每次操作都会重新执行排序。

如果我们希望在执行多个切换用例之后仍然保留IEnumerable的排序值,可以使用ToList()方法将IEnumerable转换为List。这样做的好处是,List会在内存中保留排序后的结果,而不会每次操作都重新排序。

下面是一个示例代码:

代码语言:txt
复制
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        IEnumerable<int> numbers = new List<int> { 3, 1, 2 };

        List<int> sortedNumbers = numbers.OrderBy(n => n).ToList();

        // 在执行多个切换用例之后,仍然保留排序值
        Console.WriteLine("排序后的结果:");
        foreach (int number in sortedNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

在上面的示例中,我们首先创建了一个包含3、1、2三个数字的IEnumerable集合。然后使用OrderBy方法对集合进行排序,并通过ToList方法将排序后的结果转换为List。最后,我们输出排序后的结果。

这样,即使在执行多个切换用例之后,sortedNumbers列表仍然保留了排序值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法

因此,即使开始编写 LINQ查询时,熟悉如何在查询和查询表达式本身中使用方法语法也十分有用。...虽然看起来似乎 IEnumerable 进行了重新定义以包括这些其他方法,不过实际上情况并非如此。 标准查询运算符作为一种新类型的方法(称为扩展方法 )来实现。...若要开始使用 LINQ,你扩展方法方面实际需要了解的所有内容是如何使用正确的 using指令将它们引入应用程序的范围。 从应用程序的角度来看,扩展方法与常规实例方法是相同的。...由于查询返回 IEnumerable,因此可通过将方法调用链接在一起方法语法中撰写查询。 这是当你使用查询语法编写查询时,编译器幕后进行的工作。...因为查询变量不存储查询的结果,所以可以随时修改它或将它用作新查询的基础(即使执行过它之后)。

3.9K20

C#3.0新增功能07 查询表达式

(2)第一个 from 子句与最后一个 select 或 group 子句之间,可以包含以下这些可选子句中的一个或多个:where、orderby、join、let,甚至是其他 from 子句。...例如,下面的查询会创建包含一个或多个 Country 对象并且其键是 char 的组的序列。...使用“into”进行延续 可以 select 或 group 子句中使用 into 关键字创建存储查询的临时标识符。 如果在分组或选择操作之后必须对查询执行其他查询操作,则可以这样做。...创建这些组之后,附加子句会筛选出一些组,然后按升序对组进行排序。 若要执行这些附加操作,需要由 countryGroup 表示的延续。... LINQ 中,联接操作是对元素属于不同类型的对象序列执行。 联接了两个序列之后,必须使用 select 或 group 语句指定要存储输出序列中的元素。

2.1K10
  • 走进 LINQ 的世界

    》 和 《Linq To Objects – 如何操作文件目录》   现在,自己打算再整理一篇关于 LINQ 入门的随笔,也是图文并茂的哦。...由于查询本身必须使用 foreach 以便返回结果,因此这些查询执行时不使用显式 foreach 语句。另外还要注意,这些类型的查询返回单个,而不是 IEnumerable 集合。...若要创建包含源元素的多个属性的元素,可以使用具有命名对象或匿名类型的对象初始设定项。...尽管看起来 IEnumerable 似乎已被重新定义以包括这些附加方法,但事实上并非如此。“扩展方法”实现的。...这就是您通过使用查询语法编写查询时编译器在后台所执行的操作。并且由于查询变量不存储查询的结果,因此您可以随时修改它或将它用作新查询的基础,即使执行它后。

    4.6K30

    C#3.0新增功能09 LINQ 标准查询运算符 04 运算

    可以投影属性,并对该属性执行数学函数。 还可以不更改原始对象的情况下投影该对象。 下面一节列出了执行投影的标准查询运算符方法。...每种情况下,假定选择器(转换)函数从每个源中选择一个由花卉数据组成的数组。 下图描述 Select() 如何返回一个与源集合具有相同元素数目的集合。 ?...GroupJoin 方法关系数据库术语中没有直接等效项,但实现了内部联接和左外部联接的超集。 左外部联接是指返回第一个(左侧)数据源的每个元素的联接,即使其他数据源中没有关联元素。...:使用组合键进行联接 如何:联接不同文件的内容 (LINQ) (C#) 如何:对 join 子句的结果进行排序 如何执行自定义联接操作 如何执行分组联接 如何执行内部联接 如何执行左外部联接 如何...:创建嵌套组 如何:按扩展名对文件进行分组 (LINQ) (C#) 如何:对查询结果进行分组 如何:对分组操作执行子查询 如何:使用组将一个文件拆分成多个文件 (LINQ) (C#) 09 生成运算 生成是指创建新的序列

    9.7K20

    .NET中数据访问方式(一):LINQ

    LINQ查询特点: 延迟查询 若查询表达式的返回结果是IEnumerable类型,则在声明查询表达式时不会执行查询,而是迭代查询变量时才进行查询。...立即查询 若查询表达式返回单个或者使用了ToList、ToArray等方法时会执行立即查询,因为这些操作会遍历数据。...System.Collection.Generic.IEnumerable IEnumerable先将数据放到本地内存中,然后再执行过滤操作(如果有的话),适合于对当前进程中的数据进行查询操作,如...System.Linq.IQueryable 执行查询操作时,IQueryable先在服务器端进行过滤操作(如果有的话),然后再将数据放到本地内存中。...转载必须保留文章的完整性,且页面明显位置处标明原文链接。 如有问题, 请发送邮件和作者联系。

    2.7K30

    VS中调试LINQ(Lambda)

    对于Linq to object,当集合对象是 IEnumerable 时,对单个对象进行迭代的方式是:先把单个对象走完所有的Linq方法后,直到最后或者执行到返回不是IEnumerable的Linq...如果Linq方法的返回不是IEnumerable,单个对象的迭代会到该方法(含)为止,会立即进行下一个对象的迭代。...OrderBy()的返回是IOrderedEnumerable,所以运行了OrderBy()后,单个对象的迭代就会结束,继续下一个对象的迭代。... 4 的基础上,对于IEnumerable,如果有多个条件,我们可以写在同一个Where()里,也可以拆开写在多个Where()里,不会影响效率的,因为不会生成多个暂存结果集。...所以图中是 OrderBy输出Where的执行结果。

    4.7K30

    LINQ常用扩展方法、委托、Lambda、yield

    LINQ让数据处理变得简单 Where方法  每一项数据都会经过predicate的测试,如果针对一个元素,predicate执行的返回为true,那么这个元素就会放到返回中。...= new Random(); IEnumerable list2= list.OrderBy(e => random.Next()); 按照最后一个字符排序: IEnumerable... list2= list.OrderBy(e => e.Name[e.Name.Length - 1]); 多规则排序 可以Order()、OrderByDescending()...IGrouping是一个继承自IEnumerable的接口,IGrouping中Key属性表示这一组的分组数据的。...如果委托没有返回,且方法体只有一行代码,可省略 {} 如果=>之后的方法体中只有一行代码,且方法有返回,那么可以省略方法体的{}以及return。 如果只有一个参数,参数的()可以省略。

    9810

    .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现

    项目的源代码我会托管GayHub上,地址文章末尾会给出,自认为代码写的很工整,注释也很全,你应该能看懂 写在前面 将近一周没有更新,鬼知道我这么长时间干什么,你可以认为我憋大招,在想着怎么给大家分享更多更实用的东西...接下来我会对这部分快速的实现,可能会很少更新了,因为这些都是基本的CMS的业务操作,没多少要分享的内容,毕竟每个人的系统业务都不一样,这部分的业务实现也是千差万别的。我后期会把成品直接分享给大家!...那里会教你如何安装Nuget包?如果那篇文章里面没有,那你就好好想想为啥没有呢? ?...commandTimeout = null); /// /// 使用where子句删除多个记录 /// ...为进行测试: [Fact] public void TestBaseFactory() { IServiceProvider serviceProvider

    96220

    LINQ to SQL中使用Translate方法以及修改查询用SQL

    ExecuteReader之后即使用dataContext.Translate方法将DbDataReader里的数据转换成Item对象。...LINQ to SQL获得一个query之后,我们不再直接获得查询数据了,而是将其交给我们的ExecuteQuery扩展来执行。...查看方法返回的结果就能知道,所有对象的OwnerID的都是默认“0”,这是怎么回事呢?使用SQL Profiler观察以上代码所执行SQL语句之后我们便可明白一: SELECT [t0]....改变LINQ to SQL所执行的SQL语句   按照一般的做法我们很难改变LINQ to SQL查询所执行的SQL语句,但是既然我们能够将一个query转化为DbCommand对象,我们自然可以执行之前改变它的...事实上只要我们需要,就可以DbCommand对象生成的SQL语句上作任何修改(例如添加事务操作,容错代码等等),只要其执行出来的结果保持不变即可(事实上变又如何,如果您真有自己巧妙设计的话,呵呵)。

    4.9K50

    深入解析ASP.NET Core MVC应用的模块化设计

    因为没有限制对应用进行分解的维度,所以“应用组成部分”也是一个抽象的概念,它具有怎样的描述也是不确定的。...也正是因为如此,对应的ApplicationPart类型也是一个抽象类型,我们只要任何一个ApplicationPart对象具有一个通过Name属性表示的名称就可以。...以图1为,我们入口程序集A上标注了一个指向程序集B的ApplicationPartAttribute特性,同时程序集B和C上标注了一个分别指向程序集C和D的RelatedAssemblyAttribute...如下面的代码片段所示,当AddMvcCore扩展方法被执行的时候,它会重用已经注册的ApplicationPartManager实例。...这个ApplicationPartManager对象将作为单服务被注册到依赖注入框架中。

    27610

    【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

    它更加紧凑,可以方法链中连续调用多个操作。以下是一些常见的LINQ方法: Where: 用于过滤数据。 OrderBy / OrderByDescending: 用于排序数据。...四、LINQ查询操作和结果 4.1 如何构建和组合多个LINQ查询操作符 构建和组合多个LINQ查询操作符是通过链式调用操作符的方式来实现的。...以下是如何构建和组合多个LINQ查询操作符的示例: 假设我们有一个包含一些人员信息的集合,每个人员都有姓名、年龄和职业属性。...以下是一些常见的LINQ查询中处理集合类型的示例: 过滤数据(Where): 使用 Where 操作符来过滤集合中的元素,只保留满足条件的元素。...合并多个操作: 尽量合并多个操作为一个查询,以减少迭代次数。 避免循环中执行查询: 将查询移到循环外部,避免每次迭代中都执行一次查询。

    2.1K61

    C# 基础知识系列-7 Linq详解

    10但不大于12的同学们 List results = students.Where(t=>t.Age >10 && t.Age<= 12).ToList(); 注意在调用ToList之后数据才会实质上查询出来...解决方案:调用FirstOrDefault/LastOrDefault,这两组方法无法查询到结果时会返回一个默认。...现在介绍几个对多个数据源进行操作的方法。 Union 联合另一个同类型的数据源 联合另一个数据源,意思就是把两个数据源合并到一个里面,去掉重复的元素,只保留不重复的元素,并返回这个结果集。...'a', 'p', 'p', 'l', 'e' }; char[] reversed = apple.Reverse().ToArray(); Distinct 去重 对数据源进行去重,然后返回去重之后的结果...现在介绍一下怎么关联多个类型的数据源,类似于SQL里的多表链接查询。 Join 关联两个数据源 按照一定的逻辑将两个数据源关联到一起,然后选择出需要的数据。

    2.4K50

    30分钟LINQ教程

    但你并不知道这个参数和返回是什么类型的,       如果没有泛型,你可能把参数和返回的类型都设定为Object了       那时,你心里肯定在想:反正一都是对象,一的基类都是Object       ...        .net提供了Func泛型委托,         相同的是它也是最多0到16个输入参数,参数类型由使用者确定         不同的是它规定要有一个返回,返回的类型也由使用者确定...(3)yield 关键字       MSDN中的解释如下:       迭代器块中用于向枚举数对象提供或发出迭代结束信号。       ...时不要试图对被遍历的集合进行remove和add等操作         任何集合,即使被标记为线程安全的,foreach的时候,增加项和移除项的操作都会导致异常         (我在这里犯过错)       ...IEnumerable接口是LINQ特性的核心接口         只有实现了IEnumerable接口的集合         才能执行相关的LINQ操作,比如select,where等

    78120
    领券