我有以下代码在一个对象中生成4个列表(每个包含24个单元格):
public class MyDataObject
{
public double AmountNeed { get; set; }
public double TotalLose { get; set; }
public double TotalGain { get; set; }
public double TotalCost { get; set; }
}
var L = new List<MyDataObject>();
for (int z=0; z < list_Exp.Count; z++)
{
var d = new MyDataObject();
d.AmountNeed =Math.Ceiling((goalexp - currentexp) / (list_Exp[z]));
d.TotalLose = d.AmountNeed * (list_Amount_MadeFrom_One[z] * list_BuyPrice_MadeFrom_One[z] + list_Amount_MadeFrom_Two[z] * list_BuyPrice_MadeFrom_Two[z]);
d.TotalGain = d.AmountNeed * list_AmountMade[z] * list_SellPrice[z];
d.TotalCost = d.TotalGain - d.TotalLose;
L.Add(d);
}
dataGrid.ItemsSource = L;
每个列表都是double
类型。
完成列表创建后,我想找到d.TotalCost的最大值和最小值。
最终目标是找到min
和max
行索引,以便我可以在数据网格中为这些行着色。
谢谢。
答案 0 :(得分:0)
这可以通过LINQ来完成。
首先制作MyDataObject
工具IComparable<MyDataObject>
。像这样实现CompareTo
方法:
public int CompareTo(MyDataObject other) {
return this.TotalCost.CompareTo(other.TotalCost);
}
然后,您可以使用此方法找出总成本最高的数据对象的索引:
L.IndexOf(L.Max())
另一种方法是:
L.FindIndex(x => x.TotalCost == L.Max(y => y.TotalCost))