Linq 同时进行 2 个集合

2023-12-09

我有两个清单:

List<A> listA1 = GetFirstList();
List<A> listA2 = GetSecondList();

and class A定义

class A
{
    public int Id {get; set;}
    public DateTime ModifiedDate {get; set;}
    public string Type {get; set;}
}

我正在根据以下某些条件做一些事情。

List<A> listA1 = GetFirstList();
List<A> listA2 = GetSecondList();
List<A> result = new List<A>();
for(int i = 0; i < listA1; i++)
{
    if(listA1[i].ModifiedDate != listA2[i].ModifiedDate)
    {
        result.Add(listA1[i]);
    }
}

假设:两个列表都包含相同数量的项目Id and Type以相同的顺序。这就是为什么我只是检查ModifiedDate由于项目数量和顺序,其余部分会自动处理。

我用它改变了LINQ如下所示,它工作正常。

var match = ListA1
      .Where(a => listA2.First(ct => ct.Id == a.Id).ModifiedDate != a.ModifiedDate);
result.AddRange(match);

但它会迭代两者ListA1 and ListA2但在第一种情况下它只迭代一次。

我的问题是,我可以做吗LINQ通过保留其他集合的索引?换句话说我可以做LINQ比现在更优化?


您可以使用Enumerable.Zip通过索引链接两个序列:

List<A> result = listA1.Zip(listA2, (a1, a2) => new { a1, a2 })
    .Where(x => x.a1.ModifiedDate != x.a2.ModifiedDate)
    .Select(x => x.a1)
    .ToList();

即使两个序列都没有实现,这也会起作用IList/IList<T>,因此无法通过索引访问这些项目。

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

Linq 同时进行 2 个集合 的相关文章

随机推荐

  • 添加新行后无法“刷新”filamentgroup tablesaw 响应表

    我正在使用 AngularJS Utils 分页指令和filamentgroup tablesaw 响应式表库的组合来尝试获得响应式 通过向右滑动 分页表 一旦我填充了表格 我就从另一个名为responsive table的指令中调用tab
  • 从打印语句中删除最后一个分隔符

    这是对整数数组进行排序的方法 如何从输出中删除最后一个分隔符 public void Sort int sort for int a sort System out print a Output 1 2 3 4 5 6 7 8 9 10 1
  • 仅将圆角添加到 UITableView 的顶部?

    我试图仅向 UITableView 的顶角添加圆角 但问题是 使用下面的代码 它只会在整个 UITableView 上形成黑色层 我该如何解决这个问题 Rounded Corners for top corners of UITableVi
  • 基于 Android 4.0 的 Virtual Box 模拟器无法检测到笔记本电脑的蓝牙 4.0

    目前我正在开发与蓝牙 4 0 设备通信的 Android 应用程序 截至目前 我包括博康布尔在我的应用程序中并做了一些示例代码 实际上我没有基于蓝牙 4 0 的 Android 智能手机 因此出于测试目的 我只是安装了 Oracle Vir
  • Websocket 使用队列等待服务器响应

    我使用 websocket 发送和接收数据 每秒最多 30 条小消息 我希望客户端发送 websocket 有效负载并等待来自服务器的特定消息 Flow 客户端发送请求 它还将 requestId 163 存储在waitingRespons
  • D3:将鼠标滚轮重新映射为平移手势而不是缩放手势

    默认情况下 当您在 D3 中创建新的缩放行为时 它会映射鼠标滚轮来控制缩放级别 如果图表大于图表区域 您还可以单击并拖动来平移图表 我想重新映射鼠标滚轮手势以在垂直轴上平移 鼠标滚轮向上平移 鼠标滚轮向下平移 有人知道如何实现这一目标吗 好
  • Fortran“参数”类型不包含在编译对象中

    我有一个 Fortran 模块 其中包含一些具有属性的变量parameter有些有属性save The parameter那些不包含在编译的对象中 这在尝试组装库时成为一个问题 例如 考虑一个文件testModule f90 module
  • Javascript:检查服务器是否在线?

    通过 JavaScript 检查我的服务器是否在线的最快方法是什么 我尝试过以下 AJAX function isonline var uri MYURL var xhr new XMLHttpRequest xhr open GET ur
  • 如何使用 HttpWebRequest 登录后从网络提取数据

    我正在尝试从登录中提取数据 以便能够验证登录是否成功 如何使用 HttpWebRequest 提取页面内容 以便我可以使用它来验证登录是否正常 由于无论登录正确还是错误 每次登录都会返回状态代码 200 因此验证登录是否成功变得更加困难 p
  • _tkinter.TclError:预期的浮点数但得到“08”(看起来像无效的八进制数)

    我是一名 A level 学生 正在写计算机课程作业 我的代码的一小部分接受输入 将它们转换成时间 早上 8 点钟显示如下 08 因为 SQLite 喜欢这样 但是 当将其转换为日期时 我在标题中收到错误消息 tkinter TclErro
  • Windows下使用Lua读写串口

    我的总体计划目标是使用 Lua 创建更好的 3D 打印机校准 GUI 幸运的是 GUI 部分已经可以工作了 我正在尝试从 Windows 10 计算机上的 COM 端口读取和写入打印机的 Arduino 然而 我对串行通信感到困惑 目前 我
  • 比较两个字符串并突出显示发现的不匹配之处

    我想比较两个字符串并突出显示不匹配的单词 我编写的代码有以下两个问题 1 只要存在不匹配 该单词就会存储在 令牌 中 但是一旦调用突出显示函数 它就会突出显示该字符串中与令牌中的单词匹配的所有单词 2 所有差异都会显示在控制台上 然而 当
  • Soundcloud API:如何仅播放曲目的一部分?

    对于即将到来的项目 我正在研究使用 Soundcloud API 仅播放特定长度 例如 20 秒 的曲目的可能性 有人可以告诉我这是否可能吗 或者应该单独创建一个长度有限的不同轨道吗 非常感谢 马丁 WebForDreams 有几种方法可以
  • IE挂起,CPU占用100%

    我有一个 Web 应用程序 在正常交互过程中 它会挂起 IE 我所说的 IE 被挂起 是指 IE 不再响应并使用 100 的 CPU 摆脱这种状态的唯一方法就是终止 IE 进程 关于该应用程序 它仅在浏览器中加载一页 通过 Ajax 查询与
  • 在图表.net mvc3中设置间隔

    我想在 mvc3 net c 中将图表上的间隔设置为 1 使用 System Web Helpers 我找不到图表属性来设置间隔 以便 x yValues 显示所有标签 这里是代码 Chart key new Chart width 600
  • 如何从 YouTube 播放器中删除 YouTube 徽标以便在其他应用程序中使用?

    我想在我的应用程序中使用 Charmless youtube 播放器 并且我想从播放器中删除 youtube 徽标 我怎样才能实现这个目标 我的应用程序是使用 AS3 开发的 只需添加 modestbranding 1到您的网址末尾 查看更
  • React Native 中 WebView 内的 Twitter 小部件

    我正在尝试在 a 中加载 Twitter 小部件WebView在我的 React Native 应用程序中 但似乎我注入的 Javascript 由于某种原因无法工作 我正在做的是异步加载 Twitter 脚本 函数采取从这里 然后执行tw
  • n & (n-1) 这个表达式的作用是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 关于判断数字是否为2的幂的查询 这个函数有什么作用 n n 1 这个表达可以用在什么地方 它正在弄清楚如果n是 0 或 2 的精确幂 它之所以有效 是因为 2 的二进制幂的形式为1000 000减去一
  • 如何使用闭包在两个 ViewController 之间传递数据

    我想知道如何使用闭包传递数据 我知道有三种类型的数据传递方法 delegate 通知中心 closure 我想用一个例子来正确地澄清闭包 使用块 闭包传递数据是一种很好且合理的方法 比通知要好得多 下面是相同的代码 第一个 ViewCont
  • Linq 同时进行 2 个集合

    我有两个清单 List a listA1 GetFirstList List a listA2 GetSecondList and class A定义 class A public int Id get set public DateTim