gpt4 book ai didi

c# - 在c#中根据List中的子串匹配生成新的List

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:45 25 4
gpt4 key购买 nike

考虑一个 c# List<string> files内容如下

C:\z1\z1.docx
C:\z1\z2.docx
C:\z2\z2.docx // <--- file z2.docx has the same name as in folder z1.

我现在想找到所有具有相同文件名 的文件,并收到一个包含完整路径 + 文件名 的列表

List<string> duplicates

C:\z1\z2.docx
C:\z2\z2.docx

我在问,因为用循环和其他低效的方式编写解决方案很容易,但我想使用一个优雅的解决方案,而我对 C# 中列表操作的了解还不够。

最佳答案

我不确定你的循环会是低效的 - 这就是 LINQ 无论如何都会在幕后做的事情。但是如果你想使用 LINQ,你可以使用几个方法调用来实现:

var result = files.GroupBy(p => Path.GetFileName(p))
.Where(g => g.Count() > 1)
.SelectMany(g => g);

它将首先按文件名分组,丢弃所有只有 1 个元素的组,并将剩余的组展平为单个路径集合。

您可以添加 ToList调用SelectMany将结果具体化为 List<string> .

关于c# - 在c#中根据List<string>中的子串匹配生成新的List<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41408583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com