C# 在大数组中查找相似元素的最佳方法

C# 在大数组中查找相似元素的最佳方法,c#,arrays,string,list,search,C#,Arrays,String,List,Search,我有一个由一百万个电话号码组成的字符串数组,我想找到最后四位数字中相似的号码。例如: 9031017575 9031139446 9031507575 9013009446 9023027575 9012204000 将是: 9031017575 9031507575 9023027575 9031139446 9013009446 将列出最后四位相似的唯一编号 string[] Numbers = File.ReadAllLines(NumbersFilePath); List<st

我有一个由一百万个电话号码组成的字符串数组,我想找到最后四位数字中相似的号码。例如:

9031017575
9031139446
9031507575
9013009446
9023027575
9012204000
将是:

9031017575
9031507575
9023027575
9031139446
9013009446
将列出最后四位相似的唯一编号

string[] Numbers = File.ReadAllLines(NumbersFilePath);
List<string> SimilarNumbers = new List<string>();
List<string> DissimilarNumbers = new List<string>();
string[]Numbers=File.ReadAllLines(NumbersFilePath);
列表相似编号=新列表();
列表不同编号=新列表();

我用循环中的循环来比较所有元素,用正则表达式来捕捉最后四位数字(我想忘记这个算法,用一个现代的、更快的、更简单的算法!)。

显然你也希望不用研究或编写代码就可以做到这一点?只是复制和粘贴?整理颠倒的号码并散散步?我希望你不是在写软件来欺骗电话号码和用类似的号码打机器人电话,因为那不酷。试试下面的:string[]input={“9031017575”、“9031139446”、“9031507575”、“9013009446”、“9023027575”、“9012204000”};var groups=input.GroupBy(x=>x.Substring(x.Length-4)).ToList()@不,一个帮助就足够了。一个方法或有效算法的线索。在这种情况下,我能再问一个问题吗?
string[] numbers = {"9031017575",
                    "9031139446",
                    "9031507575",
                    "9013009446",
                    "9023027575",
                    "9012204000"};

var similars = numbers.GroupBy(x => x.Substring(x.Length - 4))
                       .Where(g=>g.Count()>1)
                       .SelectMany(x => x)
                       .ToList();