c# - 如何使用 LINQ 从 C# 中的 List<String> 获取 "One -one"排列字符串

标签 c# linq

我有一个字符串列表

List<String> MyList=new List<String>{ "A,B" , "C,D,E" , "F,G" };

我需要将列表“MyList”转换为以下格式

"A-B"
"B-A"
"C-D"
"C-E"
"D-C"
"D-E"
"E-C"
"E-D"
"F-G"
"G-F"

现在我正在使用类似用“,”拆分每个项目的方法,然后将其添加到新列表中,然后进行组合,然后在所有列表中执行并集操作。

有什么方法可以使用 LINQ 来做到这一点吗?

最佳答案

类似这样,假设每个列表中没有重复。

from a in new List<String>{ "A,B" , "C,D,E" , "F,G" }
select a.Split(',') into b
from c in b
from d in b
where c != d
select c + "-" + d

允许重复有点尴尬:

(new List<String>{ "A,B" , "C,D,E" , "F,G" }).Select(csv => 
    csv.Split(',')
    .SelectMany((a,i) => csv.Split(',').Select((b,j) => new { a, i, b, j } ))
    .Where(r => r.i != r.j)
    .Select(r => r.a + "-" + r.b))

关于c# - 如何使用 LINQ 从 C# 中的 List<String> 获取 "One -one"排列字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3757610/

相关文章:

c# - 位数组相等

c# - 如何使用 C# 和 OpenXml 访问 Word 文档中大纲的编号?

c# - 编写 C# 控制台代码后在 XNA 中可视化游戏

c# - 如何使用单个 LINQ 查询按年份对事件进行分组?

c# - LINQ 中的 GroupBy 并设置属性

c# - 添加/求和两个数组

c# - 算法建议唯一值和编辑

c# - Windows Phone 8 日志记录

c# - 存储过程中的转换异常

c# - 如何在 linq where 子句中使用带有通用 func lambda 的表达式?