c#算法,统计不同id的次数,该怎么处理
c#算法,统计不同id的次数
例子:
id state
1 上
1 下
1 上
1 下
2 上
2 上
2 下
2 上
2 下
3 下
3 下
3 上
用C#统计不同id的次数(一上一下(或一下一上)算作一次),id已经按从小到大排列了,结果:{ [{ "id": 1, "num": 2次 }, { "id": 2, "num": 2次}, { "id": 3, "num": 1次 }] }
------解决思路----------------------
弄好结贴
例子:
id state
1 上
1 下
1 上
1 下
2 上
2 上
2 下
2 上
2 下
3 下
3 下
3 上
用C#统计不同id的次数(一上一下(或一下一上)算作一次),id已经按从小到大排列了,结果:{ [{ "id": 1, "num": 2次 }, { "id": 2, "num": 2次}, { "id": 3, "num": 1次 }] }
------解决思路----------------------
弄好结贴
List<Tuple<int, string>> list = new List<Tuple<int, string>>();
list.Add(new Tuple<int, string>(1, "上"));
list.Add(new Tuple<int, string>(1, "下"));
list.Add(new Tuple<int, string>(1, "上"));
list.Add(new Tuple<int, string>(1, "上"));
list.Add(new Tuple<int, string>(1, "上"));
list.Add(new Tuple<int, string>(1, "上"));
list.Add(new Tuple<int, string>(1, "上"));
list.Add(new Tuple<int, string>(1, "下"));
list.Add(new Tuple<int, string>(1, "下"));
list.Add(new Tuple<int, string>(1, "下"));
list.Add(new Tuple<int, string>(1, "上"));
list.Add(new Tuple<int, string>(2, "上"));
list.Add(new Tuple<int, string>(2, "上"));
list.Add(new Tuple<int, string>(2, "下"));
list.Add(new Tuple<int, string>(2, "上"));
list.Add(new Tuple<int, string>(2, "下"));
list.Add(new Tuple<int, string>(3, "下"));
list.Add(new Tuple<int, string>(3, "上"));
list.Add(new Tuple<int, string>(3, "下"));
string[] sp = new string[] { "上下", "下上" };
var dic = list.GroupBy(p => p.Item1).ToDictionary(p => p.Key, p => string.Join("",p.Select(s => s.Item2)).Split(sp, StringSplitOptions.None).Length -1);
foreach (var item in dic)
{
Console.WriteLine("id:{0},num:{1}", item.Key, item.Value);
}