c# – 如何使用LINQ从List中删除重复的组合
发布时间:2020-12-15 20:53:18 所属栏目:百科 来源:网络整理
导读:我有一个像List的字符串 Liststring MyList = new Liststring{ "A-B","B-A","C-D","C-E","D-C","D-E","E-C","E-D","F-G","G-F"}; 我需要删除列表中的副本,即如果存在“A-B”和“B-A”,那么我只需要保留“A-B”(第一个条目) 所以结果就像 "A-B" "C-D""C-E" "D
我有一个像List的字符串
List<string> MyList = new List<string> { "A-B","B-A","C-D","C-E","D-C","D-E","E-C","E-D","F-G","G-F" }; 我需要删除列表中的副本,即如果存在“A-B”和“B-A”,那么我只需要保留“A-B”(第一个条目) 所以结果就像 "A-B" "C-D" "C-E" "D-E" "F-G" 有没有办法用LINQ做到这一点? 解决方法
这将返回您查找的序列:
var result = MyList .Select(s => s.Split('-').OrderBy(s1 => s1)) .Select(a => string.Join("-",a.ToArray())) .Distinct(); foreach (var str in result) { Console.WriteLine(str); } 简而言之:将 – 字符上的每个字符串拆分为两个元素的数组.对每个数组进行排序,然后将它们连接在一起然后,您只需使用Distinct即可获得唯一值. 更新:在考虑更多时,我意识到您可以轻松删除其中一个Select调用: var result = MyList .Select(s => string.Join("-",s.Split('-').OrderBy(s1 => s1).ToArray())) .Distinct(); 免责声明:此解决方案将始终将值“A-B”保持在“B-A”之上,而不管原始序列中出现的顺序如何. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |