在子列表C#中查找具有最小值的索引

时间:2017-01-25 15:51:20

标签: c# indexof

我想找到索引,其索引具有子列表的最小值。 我有一个类名Subproblem,如下所示:

public class Subproblem
{
    public double[,] x { get; set; }
    public double ReducedCost { get; set; }
}

然后我想找到子问题的索引,它具有降低成本的最小值。

var sub = new List<Subproblem>();
Subproblem s = new Subproblem();
s.x = new double[DC1, DC1];
for (int m = 0; m < M; ++m)
{
  s.ReducedCost = model.ObjVal;
  for (int i = 0; i < DC1; ++i)
  {
    for (int j = 0; j < DC1; ++j)
    {
     s.x[i, j] = x[i, j].X;
    }
  }
  sub.Add(s);
}
double minRC = sub.Min(a => a.ReducedCost);
int minRCIndex = sub.IndexOf(minRC);

最后一行仍然是错误,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

您收到此错误是因为minRC的类型为double,但在您的情况下IndexOf()需要参数类型Subproblem

您应该使用FindIndex()

int minRCIndex = sub.FindIndex((i) => i.ReducedCost == minRC);

此外,您可以更改以下两行:

double minRC = sub.Min(a => a.ReducedCost);
int minRCIndex = sub.IndexOf(minRC);

只有一个:

 int minRCIndex = sub.FindIndex(i => i.ReducedCost == sub.Min(a => a.ReducedCost));