本文介绍了C# 使用带求和的元组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这张桌子:
CODE_DEST | NBR_COLIS | POIDS
-----------------------------
a | 6 | 2
b | 7 | 5
c | 1 | 1
a | 5 | 3
a | 3 | 1
b | 4 | 4
g | 2 | 4
我加了:
CODE_DEST | NBR_COLIS | POIDS
-----------------------------
a | 10 | 3
a | 4 | 3
b | 10 | 4,5
b | 1 | 4,5
c | 1 | 1
g | 2 | 4
这意味着按 NBR_COLIS LIMIT 按 10 和 NBR_COLIS 上的 AVG POODS 分组
that meant group by NBR_COLIS LIMIT by 10 and AVG POIDS on NBR_COLIS
我的代码:
List<Tuple<string, int, decimal>> oListTUP = new List<Tuple<string, int, decimal>>();
while (readerOne.Read())
{
Tuple<string, int, decimal> oTup = new Tuple<string, int, decimal>(readerOne["CODE_DEST"].ToString(), Convert.ToInt32(readerOne["NBR_COLIS"]), Convert.ToDecimal(readerOne["POID"]));
oListTUP.Add(oTup);
}
var result = oListTUP
.GroupBy(x => x.Item1)
.Select(g => new
{
Key = g.Key,
Sum = g.Sum(x => x.Item2),
Poids = g.Sum(x => x.Item3),
})
.Select(p => new
{
Key = p.Key,
Items = Enumerable.Repeat(10, p.Sum / 10)
.Concat(Enumerable.Repeat(p.Sum % 10, 1)),
CalculPoids = p.Poids / Items.Count
})
.SelectMany(p => p.Items.Select(i => Tuple.Create(p.Key, i, p.CalculPoids)))
.ToList();
foreach (var oItem in result)
{
Label1.Text += oItem.Item1 + "--" + oItem.Item2 + "--" + oItem.Item3 + "<br>";
}
我遇到了无法安静工作的 POIDS 的问题.
I have the problem with POIDS that not work quietly.
问题是:CalculPoids = p.Poids/Items.Count
我发现我的 Items.Count 总是 0
I found that my Items.Count always 0
推荐答案
我发现:
CalculPoids = p.Poids/(Enumerable.Repeat(10, p.Sum / 10).Concat(Enumerable.Repeat(p.Sum % 10, 1))).Count()
这篇关于C# 使用带求和的元组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!