我正在为我的工作制作一个项目,这是一个很大的问题...... 我正在制作一个软件,从CSV(昏迷分离值)文件中获取有关用户的信息。每个用户都有自己的电话号码和他被叫的号码。当从文件中收集信息时,我想获取一个数字的所有电话号码并按升序排序。我希望不是所有的电话号码,只是持续时间很长的电话号码。这意味着:
1-345345-9375683027
2-345345-3070982743
3-345345-9375683027
4-345345-3070982743
5-345345-9375683027
6-345345-2389479734
7-345345-2349875993
1号,3号和5号等于。 2号和4号是等于。 我想对这个数字进行排序:
1-345345-9375683027
2-345345-3070982743
3-345345-2389479734
4-345345-2349875993
现在1个我们最常见,2个是较少的第一个,所以一个...... 我正在尝试任何事情,但没有问题。 像这样:
var result = user.transactions.where(x=>x.phone == user.phone);
如果你想查看我在这里制作的项目是解决方案文件: http://mtelanalyzer.codeplex.com/
答案 0 :(得分:1)
假设电话号码为List<String>
:
var result = phoneNumbers.GroupBy(pn => pn)
.Select(grp => new { Number = grp.Key, Count = grp.Count() })
.OrderByDescending(x => x.Count)
.Select(x => x.Number);
IEnumerable<String>
(或任何类型)<击> 编辑:我刚刚看到你订购的第二个不是按编号而是按索引编号。这使它更复杂一点:
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);
击> <击> 撞击>