Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ从CSV文件中获取最常见的数据_C#_Linq_Distinct - Fatal编程技术网

C# 使用LINQ从CSV文件中获取最常见的数据

C# 使用LINQ从CSV文件中获取最常见的数据,c#,linq,distinct,C#,Linq,Distinct,我正在为我的工作做一个项目,有一个大问题。。。 我正在制作一个软件,从CSV(单独的值)文件中获取有关用户的信息。每个用户都有自己的电话号码和自己的电话号码。当从文件中收集信息时,我想获取一个号码的所有电话号码,并按升序排序。我不想成为所有电话号码的目击者,只是这是一个持续时间很长的事件。这意味着: 1-345-9375683027 2-345345-3070982743 3-345-9375683027 4-345-3070982743 5-345-9375683027 6-345345-23

我正在为我的工作做一个项目,有一个大问题。。。 我正在制作一个软件,从CSV(单独的值)文件中获取有关用户的信息。每个用户都有自己的电话号码和自己的电话号码。当从文件中收集信息时,我想获取一个号码的所有电话号码,并按升序排序。我不想成为所有电话号码的目击者,只是这是一个持续时间很长的事件。这意味着:

1-345-9375683027
2-345345-3070982743
3-345-9375683027
4-345-3070982743
5-345-9375683027
6-345345-2389479734
7-345-2349875993

数字1、3和5相等。 数字2和4相等。 我想对数字进行如下排序:

1-345-9375683027
2-345345-3070982743
3-345345-2389479734
4-345-2349875993

现在1我们是最普通的,2比1少,所以1。。。 我什么都试过,但没有问题。 像这个:

var result = user.transactions.where(x=>x.phone == user.phone);
如果您想查看我正在制作的项目,这里是解决方案文件:

假设电话号码是
列表

  • 按电话号码分组
  • 选择一个匿名类型,以便能够按计数排序
  • 按降序排列(先出现最高值),然后按数字排列
  • 选择数字,结果是一个
    IEnumerable
    (或任何类型)
  • 编辑:我刚刚看到您不是按数字而是按索引排序的。这让事情变得有点复杂:

    var result = phoneNumbers.Select((pn, i) => new { Number = pn, Index = i })
                 .GroupBy(x => x.Number)
                 .Select(grp => new { 
                     Number = grp.Key, 
                     Count  = grp.Count(), 
                     Index  = grp.First().Index 
                 })
                 .OrderByDescending(x => x.Count)
                 .ThenBy(x => x.Index)
                 .Select(x => x.Number);
    

    这是一个非常好的代码,再次感谢您。它是通用的,可以在任何地方使用。这对我现在有很多帮助。
    var result = phoneNumbers.Select((pn, i) => new { Number = pn, Index = i })
                 .GroupBy(x => x.Number)
                 .Select(grp => new { 
                     Number = grp.Key, 
                     Count  = grp.Count(), 
                     Index  = grp.First().Index 
                 })
                 .OrderByDescending(x => x.Count)
                 .ThenBy(x => x.Index)
                 .Select(x => x.Number);