我有一个列表 List<Tuple<string[], double[]>>
List<Tuple<string[], double[]>> tt = new List<Tuple<string[], double[]>>();
var t1 = new Tuple<string[], double[]>(
new string[] { "java", "c#", "nn" },
new double[] { 2, 3, 0 });
var t2 = new Tuple<string[], double[]>(
new string[] { "java", "c#", "nn" },
new double[] { 0, 3, 1 });
var t3 = new Tuple<string[], double[]>(
new string[] { "java", "c#", "nn" },
new double[] { 2, 1, 0 });
tt.Add(t1);
tt.Add(t2);
tt.Add(t3);
假设我想划分 double[]
中的每个元素总计数非零 count
列中的 s。我会得到以下结果
t1 2/2, 3/3 0/1
t2 0/2, 3/3 1/1
t3 2/2, 1/3 0/1
这是我尝试过的,但它计算的是行总数而不是列
var XX = (from tuples in tt
let rows = tuples.Item2.ToArray()
let result = rows.Select(x => x/rows.Count(i => i != 0)).ToArray()
select new Tuple<string[], double[]>(tuples.Item1, result)
).ToList();
最佳答案
您想要做的事情可以通过以下 LINQ 查询来实现:
List<Tuple<string[], double[]>> result = tt.Select(x =>
Tuple.Create(
x.Item1,
x.Item2.Select((y, i) => y / tt.Count(z => z.Item2[i] > 0))
.ToArray())).ToList();
以下是打印到控制台的结果 double :
关于c# - 使用 Linq 迭代元组列表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31765508/