-5
如何控制元組重複循環?元組限制
有人給了我一個算法的提示,我已經修改了一點。
int LimCol = Convert.ToInt32(LimitColis);
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(LimCol , p.Sum/LimCol).Concat(Enumerable.Repeat(p.Sum % LimCol, 1)),
CalculPoids = p.Poids/(Enumerable.Repeat(LimCol, p.Sum/LimCol).Concat(Enumerable.Repeat(p.Sum % LimCol, 1))).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>";
}
與LimCol = 3
正如你所看到的,我的有色紅色問題的結果。
PS:我已經創造了一些元組不使用來自SQL
數據var list = new List<Tuple<string, int, decimal>>
{
Tuple.Create("0452632", 12, 15.0m),
Tuple.Create("essai 49", 1, 45.0m),
Tuple.Create("essai 49", 1, 45.0m),
Tuple.Create("essai 49", 2, 45.0m),
Tuple.Create("essai 49", 1, 23.0m),
};
int TheLimCol = 3;
var Theresult = list
.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(TheLimCol, p.Sum/TheLimCol).Concat(Enumerable.Repeat(p.Sum % TheLimCol, 1)),
CalculPoids = p.Poids/(Enumerable.Repeat(TheLimCol, p.Sum/TheLimCol).Concat(Enumerable.Repeat(p.Sum % TheLimCol, 1))).Count()
})
.SelectMany(p => p.Items.Select(i => Tuple.Create(p.Key, i, p.CalculPoids)))
.ToList();
foreach (var oItem in Theresult)
{
Label1.Text += oItem.Item1 + "--" + oItem.Item2 + "--" + oItem.Item3 + "<br>";
}
實際輸出:
0452632--3--3,0
0452632--3--3,0
0452632--3--3,0
0452632--3--3,0
0452632--0--3,0
essai 49--3--79,0
essai 49--2--79,0
預期的結果:
0452632--3--3,75
0452632--3--3,75
0452632--3--3,75
0452632--3--3,75
essai 49--3--79,00
essai 49--2--79,00
你的問題是什麼?一點也不清楚。 – Oded
問題可能出現在「Enumerable.Repeat(LimCol,p.Sum/LimCol)」(舍入問題?)中,但是您沒有提供足夠的信息。 LimitColis的價值在哪裏? oListTUP中的Item2屬性的值是什麼? –
感謝您的回覆,我現在添加了tupel示例 – user609511