我有一個double[]
和我有另一個IEnumerable<double>
和另一個List<double>
和ObservableCollection<double>
。按比例收集的價值
所有這些都包含一些雙重價值。
我想創建可採取任何的這些,因爲這些集合作爲arguements的函數,並且它會成比例集合中的每個元素的值,使得它們添加到1
對於例如 - 如果數組有0.5,1.0和0.5的話,我可以叫ProportionateIt(mycollection)
,應該修改數值爲0.25,0.5和0.25,因爲現在他們總結爲1
到目前爲止,我已經試過這樣:
private IEnumerable<double> ProportionateIt(IEnumerable<double> input)
{
double sum = 0;
var newCollection = input.ToList();
foreach (double d in newCollection)
{
sum+= d;
}
for (int i=0; i < input.Count(); i++)
{
newCollection[i] = newCollection[i]*(1/sum);
}
input = newCollection as IEnumerable<double>;
return input;
}
它有一些問題
- 它並不需要的一切,我上面的論點陳述的類型。
- 返回而不是修改原來的一個新的集合。
有人能爲我創造一個ProportionateIt(....)函數?
MZF的答案是一個很好的解決方案,以 「適度」 的列表。您現在可以創建採用不同類型集合的方法的重載。在這些方法中,你把元素一個新的列表,並調用它接受一個列表,並返回一個列表proportionated,反過來你放回原來的收集方法。 –