Получить минимальное значение переменных C# или JS

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Привет все, столкнулся с задачей которую не могу решить.
Надо и переменных per1, per2, per3 выбрать минимальное значение по условия:
1. Значение отличное от 0
2. Любая из переменных может быть полностью пустой.

Накидал вот такой код, он находит минимальное значение отличное от 0, но если переменная пустая, то не возвращает никакого значения.
Код:
var arr = [];
if ({-Variable.per1-} > 0){
arr.push({-Variable.per1-});
}
if ({-Variable.per2-} > 0){
arr.push({-Variable.per2-});
}
if ({-Variable.per3-} > 0){
arr.push({-Variable.per3-});
}
Math.min.apply(this, arr);
Помогите решить второе условие задачи.
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93
Привет все, столкнулся с задачей которую не могу решить.
Надо и переменных per1, per2, per3 выбрать минимальное значение по условия:
1. Значение отличное от 0
2. Любая из переменных может быть полностью пустой.

Накидал вот такой код, он находит минимальное значение отличное от 0, но если переменная пустая, то не возвращает никакого значения.
Код:
var arr = [];
if ({-Variable.per1-} > 0){
arr.push({-Variable.per1-});
}
if ({-Variable.per2-} > 0){
arr.push({-Variable.per2-});
}
if ({-Variable.per3-} > 0){
arr.push({-Variable.per3-});
}
Math.min.apply(this, arr);
Помогите решить второе условие задачи.
А что он должен при пустой возвращать ?

Вот код который пустые, не инициализированные или равные 0 пропускает при поиске.
C#:
string[] vars = new string []  {"1", "2", "3", null, "", "0"};
int result = vars.Where(item =>
    {
        int val = 0;
        if (String.IsNullOrWhiteSpace(item) || !Int32.TryParse(item,out val))
            return false;
        return val != 0;
    }).Min();
return result;
Из переменных значения получаем так:
C#:
string[] vars = new string []  {
    project.Variables["per1"].Value,
    project.Variables["per2"].Value,
    project.Variables["per3"].Value,
    project.Variables["per4"].Value
};
//Дальше вставляем вышестоящий код кроме строки с string[] vars = ....
 
Последнее редактирование:

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
в таком варианте:
Код:
string[] vars = new string []  {
    project.Variables["per1"].Value,
    project.Variables["per2"].Value,
    project.Variables["per3"].Value,
};
int result = vars.Where(item =>
    {
        int val = 0;
        if (String.IsNullOrWhiteSpace(item) || !Int32.TryParse(item,out val))
            return false;
        return val != 0;
    }).Min();
return result;
код выдает такую ошибку:
upload_2016-11-2_9-55-25.png
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93
в таком варианте:
Код:
string[] vars = new string []  {
    project.Variables["per1"].Value,
    project.Variables["per2"].Value,
    project.Variables["per3"].Value,
};
int result = vars.Where(item =>
    {
        int val = 0;
        if (String.IsNullOrWhiteSpace(item) || !Int32.TryParse(item,out val))
            return false;
        return val != 0;
    }).Min();
return result;
код выдает такую ошибку:
Посмотреть вложение 16353
Ага, забыл в число сконвертировать, если сравнивать по строковому типу, то 15 будет меньше 2х например.
C#:
string[] vars = new string []  {
    project.Variables["per1"].Value,
    project.Variables["per2"].Value,
    project.Variables["per3"].Value
};

var result = vars.Where(item =>
   {
        int val = 0;
        if (String.IsNullOrWhiteSpace(item) || !Int32.TryParse(item,out val))
            return false;
        return val > 0;
    }).Select(item => Convert.ToInt32(item)).Min();
return result;
 
  • Спасибо
Реакции: baimkin

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Спасибо! работает.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)