从列表对象双重类型中查找Max单元格索引和值

时间:2017-03-05 18:51:21

标签: c# list double max min

我有以下代码在一个对象中生成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的最大值和最小值。

最终目标是找到minmax行索引,以便我可以在数据网格中为这些行着色。

谢谢。

1 个答案:

答案 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))