Linq 在 C# 中比较两个集合

2024-04-02

我想比较我当前正在使用嵌套“for”循环执行的 C# 中的两个集合。 Linq 中是否有一种方法可以更快、更高效地执行相同操作?这是我当前的代码,它可以完美地工作,只是在寻找一种有效的方法:

OrgCollection myYears = Org.RetrieveDistinctYear();
if (myYears.Count > 0)
{
AcademicYearCollection allYears = AcademicYear.RetrieveAll();
for (int i = 0; i < myYears.Count; i++)
{
    for (int j = 0; j < allYears.Count; j++)
    {
        if (myYears[i].AcademicYearCode == allYears[j].Code)
        {
        ddlYear.Items.Insert(0, new ListItem(allYears[j].Name,allYears[j].Code));
        break;
        }
    }
}
}

我想将学年集合中的“代码”与 OrgCollection 中的“学年代码”属性进行比较,如果相同,则将其添加到下拉列表“ddlYear”中。

提前致谢。


您可以在 LINQ 中完成此操作,它提供的代码更短。要知道它是否更有效,您必须对其进行分析。我认为 linq 的连接运算符在内部使用某种哈希桶,这应该会提供更好的性能,特别是在集合很大的情况下。您当前的解决方案是 O(N^2),如果选项数量增加,该解决方案将很快退化。

OrgCollection myYears = Org.RetrieveDistinctYear();
AcademicYearCollection allYears = AcademicYear.RetrieveAll();

var items = from y in myYears
            join ay in allYears
            on y.Code equals ay.AcademicYearCode
            select new { ay.Name, ay.Code }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq 在 C# 中比较两个集合 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 我可以在自定义域中使用通配符子域吗?

    只是检查一下是否有人知道这是否可能 我想在 firebase 托管中使用通配符子域 并使用函数来解析子域 不可以 Firebase Hosting 目前不支持通配符子域 这是我们将来想做的事情 但目前没有时间表或具体计划可以分享
  • React 流程图库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个流程图库 它可以帮助我在 React 中创建如下所示的流程图 如果添加类似演示的链接 我将非常
  • 由于空对象引用,无法将新对象添加到 RealmList

    我必须领域对象 一个是带有两个字符串和一个布尔值的基本 RealmObject 另一个只是该对象的 RealmList 以便于访问 当我尝试从 ContactBook 实例获取列表并添加新对象时 我尝试在空对象引用上调用虚拟方法 但是 我能
  • 无法绑定到“for”,因为它不是已知的本机属性 angular2

    我必须动态创建一个复选框列表 因此我使用 ngFor 来迭代对象数组 直到迭代为止一切正常 当我设置值时出现问题forlabel标签中的属性 角度抛出错误 无法绑定到 for 因为它不是已知的本机属性 angular2 新的错误消息 未处理
  • Java 8 lambda 表达式与只有一个方法的抽象类[重复]

    这个问题在这里已经有答案了 我正在学习 Java 8 中的 lambda 表达式 有人可以向我解释如何将 lambda 表达式与只有一种方法的抽象类一起使用 如果可能的话 例如 这是抽象类 public abstract class Cla
  • 在构建服务器上运行 UI 自动化测试

    我们使用 UI Automation 和 Nunit 为 WPF 应用程序创建测试 UI 测试 我们创建的测试在您从本地计算机运行时可以正常工作 这些测试从未在我们的构建服务器 使用 TeamCity 上成功运行 打开应用程序窗口后 构建始
  • CKEditor editor1.insertHtml() 不适合我

    我正在使用 CKEditor 来编辑帖子的评论 我也在使用 JQuery 因为每个帖子可能有多个评论 所以我试图将其全部基于班级 下面的函数应该隐藏注释的显示区域 将显示区域中的文本插入到编辑器中 最后显示编辑器 function fnCo
  • 监视一组文件的更改并在更改时对其执行命令

    我想到的 命令行 界面如下所示 watching FILE do COMMAND ARGS and COMMAND ARGS 凡出现 in COMMAND替换为已更改的文件的名称 并注意 do and and 是关键字 例如 gt watc
  • Ajax 请求 net_error = -3 (ERR_ABORTED)

    我似乎无法弄清楚为什么会发生这种情况 它只是偶尔发生一次 我应该指出 如果这有什么影响的话 我正在使用卫星互联网 在网络间隔中 这是我捕获的 2725 URL REQUEST https testsite com wp json api a
  • OS X / iOS - 使用 AudioConverterFillComplexBuffer 进行缓冲区的采样率转换

    我正在为一个项目编写一个 CoreAudio 后端名为 XAL 的音频库 http libxal googlecode com 输入缓冲器可以具有不同的采样率 我使用单个音频单元进行输出 想法是在将缓冲区发送到音频单元之前对其进行转换和混合
  • Android 无法使用 soundpool 播放某些 wav 文件?

    某些 wav 文件我无法使用 soundpool 播放 我什么也听不到 有些文件播放得很好 为什么 code AudioManager mgr AudioManager context getSystemService Context AU
  • 如何将矩阵(列表列表)中的所有值增加 n?

    我必须创建一个函数 将矩阵作为参数传递 然后将矩阵中每个项目的值增加n通过使用嵌套循环 例如 如果我的矩阵是 8 9 4 6 7 2 and n 1 我想要的输出是 9 10 5 7 8 3 您可以编写一个简单的函数来迭代列表 以将每个元素
  • cygwin rsync协议错误

    我正在尝试在 64 位 Windows 7 和 64 位 Linux 之间 rsync 文件 我在两台机器上都安装了 rsync 3 0 7 Windows 上的 cygwin 版本 这是我在 Windows 上运行的命令 我看到它正在建立
  • 初始数据夹具中的用户

    我在默认情况下创建了一些用户fixtures initial data json从而有一些测试 科目 我遇到的问题是密码生成 我可以在 字段 中设置密码 但这不会生成哈希密码 model auth user pk 1 fields user
  • std::make_unique 和 std::unique_ptr 与 new 之间的差异

    Does std make unique有任何效率优势 例如std make shared 与手动构建相比std unique ptr std make unique
  • 有序列表 CSS 样式包括父编号

    我们希望使用 CSS 创建一个如下所示的有序列表 A A 1 A 2 B C C 1 C 2 C 2 1 C 2 2 您如何将父索引包含在子索引中 你需要使用CSS 计数器 https developer mozilla org en US
  • Chart.js 将标签变成链接

    我不确定如果不做以下事情是否可能 在 HTML 画布中创建链接 https stackoverflow com questions 6215841 create links in html canvas但让我们确定一下 有没有一种方法 相对
  • 计算 python 中第二个列表中列表项的出现次数

    a list 1 2 3 4 5 6 7 8 9 0 b list 1 3 6 9 如何计算列表be中的某个项目在列表a中出现的次数 上面的示例应返回值 4 在写这个问题时 我想到了以下内容 似乎有效 a list 1 2 3 4 5 6
  • C++ 容器的一般用例

    的一般用例是什么C 标准库容器 http www cplusplus com reference stl bitset deque list map multimap multiset 优先队列 queue set stack vector
  • Linq 在 C# 中比较两个集合

    我想比较我当前正在使用嵌套 for 循环执行的 C 中的两个集合 Linq 中是否有一种方法可以更快 更高效地执行相同操作 这是我当前的代码 它可以完美地工作 只是在寻找一种有效的方法 OrgCollection myYears Org R