如何在 C# 中从两个 List 中获取移动组合?

2024-01-02

我有两个List<String>其中包含

ListOne
          A
          B
          C
ListTwo
          A
          B
          C
          D

现在我需要将移动组合获取到列表字符串

所以输出列表将包含

         A-B
         A-C
         A-D
         B-C
         B-D
         C-D

现在我正在使用Nested for loop为了这。? 有什么方法可以使用LINQ or LAMBDA EXPRESSION请帮助我做到这一点。 提前致谢

示例代码

List<String> ListOne = new List<string> { "A","B","C"};
List<String> ListTwo = new List<string> { "A", "B", "C", "D" };

List<String> Result = new List<string>(from X in ListOne 
                                       from Y in ListTwo 
                                       where X!=Y
                                        select string.Format("{0}-{1}", X, Y));

但它没有给出正确的输出

  It produces like

            A-B
            A-C
            A-D
            B-A
            B-C
            B-D
            C-A
            C-B
            C-D

但所需的输出就像

         A-B
         A-C
         A-D
         B-C
         B-D
         C-D

示例代码使用For Loop

List<String> ResultTwo = new List<string>();
        for (int i = 0; i < ListOne.Count; i++)
        {
            for (int j = 0; j < ListTwo.Count; j++)
            {
                if(ListOne[i] != ListTwo[j])
                    if (ResultTwo.Contains(ListOne[i] + "-" + ListTwo[j]) == false && ResultTwo.Contains(ListTwo[j] + "-" + ListOne[i]) == false) 
                ResultTwo.Add(ListOne[i] + "-" + ListTwo[j]);
            }
        }

它工作正常......但我只需要一个简单的方法(使用LINQ)


进行编辑后,这应该可以解决问题:

List<string> ListOne = new List<string>(){"A","B","C"};
List<string> ListTwo = new List<string>(){ "A","B","C","D"};

var result = from a in ListOne
             from b in ListTwo
             let condition = a.CompareTo(b)
             where condition != 0
             select condition < 0 ? a + "-" + b : b + "-" + a;


foreach (var v in result.Distinct())
{
    Console.WriteLine(v);
}

保留顺序的第二个版本(ItemFromList1 - ItemFromList2):

        var result =
            from o in
                (
                    from a in ListOne
                    from b in ListTwo
                    let condition = a.CompareTo(b)
                    where condition != 0
                    select new { a, b, condition }
                )
                group o by
                    o.condition < 0 ? o.a + "-" + o.b : o.b + "-" + o.a into g
                select g.Select(n => n.a + "-" + n.b).Take(1).ToArray()[0];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中从两个 List 中获取移动组合? 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 使用 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 也有效
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 在客户端系统中安装后桌面应用程序无法打开

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

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • 核心图像:使用 CICrop 后,应用合成滤镜无法对齐

    我正在使用 CICrop 通过剪切图像的顶部和底部来将图像裁剪为特定尺寸 之后 我应用 CIMultiplyCompositing 过滤器之类的东西 将裁剪后的图像与另一个图像组合起来 两张图片大小相同 但结果显示两张图片没有对齐 其中一张
  • VBA - 在“IF 语句”内嵌套“With 语句”

    语言 VBA MS Access 我在代码中使用用户定义类型 UDT 我希望能够根据状态变量确定我正在将数据加载到 UDT 的哪个部分 我的第一次尝试是使用嵌套在 IF 语句中的 With 语句 这不起作用 我收到一个编译器错误 显示 El
  • 不明白二叉树最大路径和问题的解法

    GeeksforGeeks 网站已推出一个办法 https www geeksforgeeks org find maximum path sum in a binary tree 对于二叉树的最大路径和问题 问题如下 给定一棵二叉树 找到
  • 有条件的 Django 中间件(或如何排除管理系统)

    我想使用我在整个网站上编写的一些中间件 大量页面 因此我选择不使用装饰器 因为我想对所有页面使用代码 唯一的问题是我不想将中间件用于管理代码 并且它似乎对它们很活跃 有什么方法可以配置 settings py 或 urls py 或者代码中
  • 为什么 FormControl#valueChanges 的订阅没有被垃圾收集?

    我浏览过很多帖子说需要取消订阅FormControl valueChanges以防止内存泄漏 我了解取消订阅的 何时 和 如何 Observables 据我了解 产生的 Observablesinfinite需要取消订阅的值的数量以及For
  • 检查 SQL Server 服务器可用性的最快方法是什么?

    我有一个在多个位置使用的 MS Access 程序 它连接到 MS SQL Server 表 但每个位置的服务器名称都不同 我正在寻找最快的方法来测试服务器是否存在 我当前使用的代码如下所示 ShellWait sc ServerName
  • 将 PivotItemHeader 样式应用于 UWP 中的 PivotItem

    我已经创建了一个 PivotItemHeader 样式 其中包含资源中的键 但不知道在哪里应用它 尽管如果我删除 Key 它将应用于所有 PivotItemHeader 但我不想这样做 我只想将此应用到选择枢轴
  • 如何从代码中更改宽高比约束值?

    我在 xib 中为 imageView 指定了 1 2 的长宽比约束 我已经为约束创建了一个 IBOutlet 现在我需要根据某些条件将纵横比更改为 1 1 我想知道除了删除旧约束并放入新约束之外 是否有任何方法可以更改约束的乘数值 我认为
  • iOS 9.x 中嵌入式 Facebook 浏览器的视口/页面高度错误

    当打开demo https mtr github io core layout examples 申请来自核心布局 https www npmjs com package core layout使用 iOS 9 x 至少 上 Faceboo
  • 在 Google 表格的 Google 脚本中的特定表格上使用 onedit() 触发器

    我需要运行由 onedit 触发的脚本 仅对其中的一张进行处理 我已经尝试过以下操作 但目前我无法让脚本仅在所需的工作表 库存 上工作我确信这对于知道的人来说会非常简单 function onEdit e var range e range
  • jQuery 日期选择器,其中文本输入是只读的

    我想使用 Jquery 日期选择器 我已经使用 alt 字段选项进行了设置 我在文本字段中显示 D M Y 但提交 Y M D 到目前为止一切正常 发送正确的数据等 但是我想阻止用户手动输入日期 我最初将 INPUT 字段设置为禁用 该字段
  • 为 QStringListModel 项设置自定义数据

    我有 QStringListModel QStringListModel blocksModel new QStringListModel 以及一个继承自QObject的类 class Block public QObject Q OBJE
  • Flutter Android Studio 调试器跳过框架文件

    是否可以配置 Android Studio Debugger 来跳过 flutter 框架文件和包文件 我对 Step Over 或 Step out 不感兴趣 因为例如在调用调度之后使用 redux 我想逐步跳过直到我编写的减速器 而不遵
  • django-haystack 和 Solr 的拼写建议

    我收到的拼写建议为 无 首先 我在 settings py 文件中设置了这个 HAYSTACK INCLUDE SPELLING True 我已经重建了索引 python manage py rebuild index 并对其进行了良好的更
  • 为什么 Git 子树总是处理每个提交?

    我在用Git 子树 https github com git git blob master contrib subtree git subtree txt在项目之间共享我的源代码的子文件夹 这工作正常 但每次我执行 git 子树推送时 终
  • 在 MATLAB 标记发布中使用 Latex 包

    我使用的是 Mac OSX 10 10 5 和 MATLAB 2015b 现在花了几个小时尝试遵循各种 google 搜索的说明 了解如何导入 LaTeX 包并在其中使用它们MATLAB 的标记 http uk mathworks com
  • NSTableView 的 NSCell 中的鼠标悬停检测?

    我想在将鼠标悬停在表格视图单元格上时更改其文本背景颜色 类似于当您将鼠标悬停在标签名称上时 AddressBook 如何 突出显示 联系人元素的标签 但是我不知道如何实现 检测特定 NSCell 上的鼠标悬停并且 检测到他悬停的单元格后 突
  • Doxygen:使用 C++ 和 VHDL 进行项目的无缝文档

    我正在建立一个关于某种库的文档 该库由 C C 部分和 VHDL 部分以及一些仅包含 doxygen 的指导性页面组成 他们必须被放入一个独立的组中 到目前为止一切正常 漂亮又蓬松 但是如果我想通过使用优化 vhdl 子目录中的输出怎么办O
  • 使用 PowerShell 将前导零添加到文件名

    我有大约 1500 个名为 jpg 的文件 例如 45312 jpg 342209 jpg 7123 jpg 9898923 jpg 或 12345678 jpg 分机号前的总号码应为 8 位 因此 如果文件名少于 8 位 我需要添加前导零
  • 如何在 C# 中从两个 List 中获取移动组合?

    我有两个List