【问题标题】:Find index which has minimum value in sublist C#在子列表 C# 中查找具有最小值的索引
【发布时间】:2017-01-26 00:09:33
【问题描述】:

我想找到该索引在子列表中具有最小值的索引。 我有一个像这样的类名子问题:

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);

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

【问题讨论】:

  • 请说明您的错误是什么。
  • @Tom int minRCIndex = sub.IndexOf(minRC);这个语法仍然是错误的(有红色下划线)
  • 你可以在dotnetfidlde添加你的样品吗?
  • 试试sub.IndexOf(s=&gt; s.ReducedCost == minRC);
  • 这是因为您尝试在“子问题”列表中查找双精度数。在这种情况下,使用 indexOf 你应该给出一个子问题。

标签: c# indexof


【解决方案1】:

您收到此错误是因为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));

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 2022-12-17
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多