我从数据库中检索了具有字符串字段" Route" .like
的记录No1) 2101-5340-5860-4923-3948-3459
No2) 4923-6574-9090-2000-3948-3400
No3) 2101-3400-4567-4444-5434-4923
我想最后得到这个结果:
No_of_iteration
--------------------------
2101 2
5340 1
4923 3
5860 1
... ... and the rest
我在考虑解决方案。一种方法是遍历行,将它们全部放入数组中。然后遍历数组以查找出现次数。
这个问题的其他解决方案是什么? 任何想法都表示赞赏。
答案 0 :(得分:3)
考虑到您的数据是这样的: -
List<string> data = new List<string>
{
"2101-5340-5860-4923-3948-3459",
"4923-6574-9090-2000-3948-3400",
"2101-3400-4567-4444-5434-4923"
};
你可以试试这个: -
var result = data.SelectMany(x => x.Split(new char[] { '-' }))
.GroupBy(x => x).Select(x => new { Value = x.Key, Count = x.Count() });
工作Fiddle。
答案 1 :(得分:0)
您可以将字符串拆分为“ - ”,然后使用字典,其中键是字符串,值是它出现的次数。
希望有所帮助。
答案 2 :(得分:0)
基本上你需要用“ - ”拆分,然后执行简单的分组,如下所示:
var result = entities.SelectMany(x => x.Route.Split('-'))
.GroupBy(x => x)
.Select(x => new { Part = x.Key, No_of_iteration = x.Count() })
.ToList();
答案 3 :(得分:0)
在您的解决方案中,您将不得不迭代1- 6000+,这对性能不利。
我建议你创建一个类
class Occurrence
{
public static int number;
public static int occurrence;
....
}
然后创建一个包含此类实例的arraylist。对于您在数据库中看到的每个数字,检查是否存在与您在数据库中看到的数字相同的次数,然后增加其中的出现值。
可能有比这更好的解决方案,我只是离开这里给你一个想法。