C#如何在字符串列表中置换所有元素

发布于 2025-02-03 18:19:45 字数 357 浏览 4 评论 0原文

我有一个字符串列表,我希望彼此的所有元素的所有排列

示例:

var myList = new List<string>{ "AB", "CD", "EF", "GK" };

结果我想要这样的字符串。

var resultStr = "ABCD,ABEF,ABGK,CDAB,CDEF,CDGK,EFAB,EFCD,EFGK,GKAB,GKCD,GKEF";

请注意,结果不包括“ ABAB”,“ CDCD”,“ EFEF”,“ GKGK”,

除了/foreach loops/foreach循环外,还有什么短途方法可以做到这一点吗?

I have a string list and i want all permutations of all elements with each others

Example :

var myList = new List<string>{ "AB", "CD", "EF", "GK" };

and as result i want a string like this.

var resultStr = "ABCD,ABEF,ABGK,CDAB,CDEF,CDGK,EFAB,EFCD,EFGK,GKAB,GKCD,GKEF";

note that resultStr doesnt include "ABAB","CDCD","EFEF","GKGK"

is there any short way to do this except double for/foreach loops?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

亣腦蒛氧 2025-02-10 18:19:45

Q:除了/foreach循环外,还有什么短途方法可以做到这一点?

是的,您可以使用Linq。

这是结果的LINQ语法表达式:

var myList = new List<string>{ "AB", "CD", "EF", "GK" };
var result = from a in myList from b in myList where a != b select a+b;
var resultStr = string.Join(",", result);
Console.WriteLine(resultStr);

您还可以使用Linq扩展方法:

var myList = new List<string>{ "AB", "CD", "EF", "GK" };
var result = myList.SelectMany(a => myList.Where(b => b != a).Select(b => a + b));
var resultStr = string.Join(",", result);
Console.WriteLine(resultStr);

两者都将输出

ABCD,ABEF,ABGK,CDAB,CDEF,CDGK,EFAB,EFCD,EFGK,GKAB,GKCD,GKEF

。它

Q: is there any short way to do this except double for/foreach loops?

Yes, you can use LINQ.

Here's the LINQ syntax expression for your result:

var myList = new List<string>{ "AB", "CD", "EF", "GK" };
var result = from a in myList from b in myList where a != b select a+b;
var resultStr = string.Join(",", result);
Console.WriteLine(resultStr);

You can also use the LINQ extension methods:

var myList = new List<string>{ "AB", "CD", "EF", "GK" };
var result = myList.SelectMany(a => myList.Where(b => b != a).Select(b => a + b));
var resultStr = string.Join(",", result);
Console.WriteLine(resultStr);

Both will output

ABCD,ABEF,ABGK,CDAB,CDEF,CDGK,EFAB,EFCD,EFGK,GKAB,GKCD,GKEF

.NET Fiddle so you can try it

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文