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

  • Автор темы Автор темы baimkin
  • Дата начала Дата начала

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

Помогите решить второе условие задачи.
 
Привет все, столкнулся с задачей которую не могу решить.
Надо и переменных 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 = ....
 
Последнее редактирование:
в таком варианте:
Код:
Развернуть Свернуть Копировать
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
 
в таком варианте:
Код:
Развернуть Свернуть Копировать
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
Спасибо! работает.
 

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