2017-01-25 1 views
0

Я хочу найти индекс, в котором этот индекс имеет минимальное значение для подсписчика. У меня есть имя класса Подзадача как это:Найти индекс, который имеет минимальное значение в подсписке C#

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

Последняя строка все еще является ошибкой, но я не знаю, как ее решить.

+0

Просьба уточнить, что ваша ошибка. – teynon

+0

@Tom int minRCIndex = sub.IndexOf (minRC); этот синтаксис по-прежнему является ошибкой (есть красная подчеркивание) –

+0

Можете ли вы добавить свой образец в [dotnetfidlde] (http://dotnetfiddle.net/)? – aloisdg

ответ

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

Спасибо, все сработало! –

Смежные вопросы