【发布时间】:2015-07-28 09:37:30
【问题描述】:
我有一个数组字典
public static void Main(string[] args)
{
Dictionary<string, int[]> ret = new Dictionary<string, int[]>();
int[] a = {1,0,3,4,0};
int[] b = { 3, 0, 9, 10, 0};
int[] c = {2,3,3,5,0};
ret.Add("Jack", a);
ret.Add("Jane", b);
ret.Add("James", c);
}
如果我想对 v*column count 等列的计数进行操作,我会这样做:
Dictionary<string, double[]> colcnt = ret.ToDictionary(r => r.Key,
r => r.Value.Select(v => v == 0 ? 0 :
(double)v / (ret.Values.Count()) //equation
).ToArray());
什么是 LINQ 代码来执行诸如计数非零行之类的操作?
如果我使用循环来计算它们,那就是
foreach (var item in ret)
{
int vals= item.Value.Count(s => s != 0);
}
所以如果我做v/column count,那么a 中的所有项目都将除以3,b 中的所有项目将除以3,c 中的所有项目将除以4
【问题讨论】:
-
为什么你的代码不够用?你使用 linq 很好。
-
您想要所有行的总计数,还是行计数数组?
-
@MatthewWatson 的行数(不包括 0 的值)
-
您尝试进行的数学方程式究竟是什么?
-
@shay__ 只是简单地将每个单元格除以非零行的总数。
标签: c# linq dictionary