IEnumerable重复函数

2024-01-02

我遇到了一个奇怪的问题。这里我重现了这个问题。

Random r = new Random();
List<int> x = new List<int> {1, 2, 3, 4, 5, 6};

var e = x.OrderBy(i => r.Next());
var list1 = e.ToList();
var list2 = e.ToList();

bool b = list1.SequenceEqual(list2);
Console.WriteLine(b); // prints false

到目前为止,我认为 Linq 函数在调用时就会执行。但是,在这个方法中,我调用后似乎ToListLinq 函数OrderBy再次执行。为什么会这样?


您正在考虑延迟执行。当您创建 LINQ 查询时,它基本上是一个蓝图,上面写着“当请求时,执行这些步骤来操作数据源”。这里棘手的部分是该请求仅由一组不同的 LINQ 操作完成(.ToList()是其中之一)。

所以当你打电话时e.ToList()一旦它会将数据源随机化,因为这就是蓝图所说的它必须做的事情。当你打电话时.ToList()再次在同一个蓝图上,它再次从头开始并再次随机化。

蓝图不包含任何状态,它只是说明了每一步应该做什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IEnumerable重复函数 的相关文章

  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 私有模板函数

    我有一堂课 C h class C private template
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 创建 debian 包

    我已经在 debian 网站上检查了创建包的情况 但是 它并不容易理解 因为它没有给出逐步的过程 请帮助我如何创建 Debian 软件包 如果可以的话有详细的步骤就更好了 目标是创建一个包 将 shell 脚本简单地放置在我想要的位置 1
  • 如何从 Scrapy 中的请求中获取响应?

    有什么办法可以让我得到response body来自scrapy中的Request函数 我有这个 request Request http www example com callback self mytest def mytest se
  • NA 替换为空格

    我使用了相同的方法将 NA 替换为空格或其他字符 但由于某种原因 这个方法不起作用 我想将数据框中的 NA 替换为空白 年份和年度列 我究竟做错了什么 shad 92 lt structure list year c 1992 NA NA
  • 通过图像中的边界框提取选定的文本

    我正在尝试通过图像上的边界框获取选定的文本 就像如果仅通过边界框选择单词一样 我想获取该文本并将其转换为文本文件 请查看我的代码并进行一些审查 以便我可以实现该功能 到目前为止 我已经将 PDF 文件转换为在文本上带有边框的图像 impor
  • 如何获取oracle中所有物化视图的列表

    如何获取所有物化视图的列表 尝试这个 SELECT FROM all snapshots 代替all snapshots您还可以使用all mviews view
  • 延迟加载角度的解析器

    有没有办法在加载延迟加载模块之前添加解析器 我尝试添加resolve到路由配置 但它没有被触发 也没有在网络上找到任何有用的东西 任何帮助 将不胜感激 import NgModule from angular core import Rou
  • 如何运行docker守护进程?

    我正在尝试使用命令运行 docker 守护进程 docker d 但我在控制台收到 unknown shorthand flag d in d 我应该怎么做才能运行 docker 守护进程 如果您停止了该服务 则需要以下命令才能重新启动它
  • 将下溢的无符号整数与 -1 进行比较是否定义明确?

    Consider the following size t r 0 r const bool result r 1 比较结果是否初始化result有明确的行为吗 它的结果是true 如我所料 This Q A was written bec
  • Excel 中的舍入函数、工作表函数与 VBA

    我有一个应用程序 用于返回与一大群值中的某些值最接近的匹配 如我之前的question https stackoverflow com questions 220966 lookup data in excel 我选择了 VBA 解决方案
  • Rails 3 视图中的 i18n Markdown 文件

    我目前正在迈克尔 哈特尔的工作导轨教程 http ruby railstutorial org ruby on rails tutorial book version 3 2同时尝试一些书中未涵盖的其他内容 完成后第5章 http ruby
  • 如何弱引用作为参数传递的函数

    我的视图控制器中有一个强引用模型 它有一个函数listenToQueue它 监听 我的 Firebase 数据库以获取实时更新 每当发生更新时 它都会将一个对象传递回我的视图控制器 然后视图控制器调用一个函数 这是我的代码 eventMod
  • 在图中绘制多个 geom-vline

    我正在尝试在图表中绘制两个 geom vline 下面的代码适用于一根垂直线 x 1 7 y 1 7 df1 data frame x x y y vertical lines lt c 2 5 ggplot df1 aes x x y y
  • 将日期列和时间列合并为日期时间列

    我有一个像这样的 Pandas 数据框 通过解析excel文件获得 COMPANY NAME MEETING DATE MEETING TIME YKSGR YAPI KRED S GORTA A 2013 12 16 00 00 00 1
  • 如何避免 Twitter Bootstrap 中的文本溢出?

    我是 Twitter Bootstrap 的新手 我写了以下 HTML div class span4 span class row fluid hideOverflow Html ActionLink item Name Details
  • java接口泛型转换问题

    List 类型中的方法 add capture 2 of extends IObject 不适用于参数 IDerived protected List
  • 改变函数中指针的值

    我想更改函数中变量的值 我的代码是这样的 void change char buf char str xxxxxxx buf str int main char xxx NULL change xxx 当我用 valgrind 调试时 它说
  • 在 Laravel 5.4 列中应用字符串函数

    我正在使用最新的 Laravel 5 4 我正在尝试进行一个简单的查询来按名称搜索用户 为 MySQL 编写的查询如下所示 SELECT FROM users WHERE upper name LIKE FOO 我正在努力让它与 Eloqu
  • Spring java.lang.NoSuchMethodError:org.springframework.expression.spel.SpelParserConfiguration

    在浏览器中打开控制器 url 时出现此错误 我读到这可能是依赖项问题 但每个 springframework jar 都有相同的 4 2 0 版本 除了现在未使用的 cql 来自服务器的完整跟踪 HTTP Status 500 Servle
  • Android-Volley:为 JsonArrayRequest 设置 HTTP 标头

    所以我看到了 JsonObjectRequests 的几个示例 其中添加了此代码 Override public String getBodyContentType return application json 有时会使用此代码 Over
  • IEnumerable重复函数

    我遇到了一个奇怪的问题 这里我重现了这个问题 Random r new Random List