Подтвердить что ты не робот

Найти, существует ли целое число в списке целых чисел

У меня есть этот код:

  List<T> apps = getApps();

        List<int> ids;

        List<SelectListItem> dropdown = apps.ConvertAll(c => new SelectListItem
        {
            Selected = ids.Contains(c.Id),
            Text = c.Name,
            Value = c.Id.ToString()
        }).ToList();


ids.Contains

Кажется, всегда возвращает false, даже если числа соответствуют

любые идеи?

4b9b3361

Ответ 1

Если вам нужен только истинный/ложный результат

bool isInList = intList.IndexOf(intVariable) != -1;

если intVariable не существует в List, он вернет -1

Ответ 2

Пока ваш список инициализируется значениями и это значение действительно существует в списке, то Contains должно возвращать true.

Я попробовал следующее:

var list = new List<int> {1,2,3,4,5};
var intVar = 4;
var exists = list.Contains(intVar);

И существует действительно значение true.

Ответ 3

То, как вы это сделали, правильно. Он отлично работает с этим кодом: x истинно. возможно, вы допустили ошибку где-то еще.

List<int> ints = new List<int>( new[] {1,5,7});
var i = 5;
var x = ints.Contains(i);

Ответ 4

Вот метод расширения, который позволяет кодировать, как команда SQL IN.

public static bool In<T>(this T o, params T[] values)
{
    if (values == null) return false;

    return values.Contains(o);
}
public static bool In<T>(this T o, IEnumerable<T> values)
{
    if (values == null) return false;

    return values.Contains(o);
}

Это позволяет такие вещи:

List<int> ints = new List<int>( new[] {1,5,7});
int i = 5;
bool isIn = i.In(ints);

Или:

int i = 5;
bool isIn = i.In(1,2,3,4,5);

Ответ 5

bool vExist = false;
int vSelectValue = 1;

List<int> vList = new List<int>();
vList.Add(1);
vList.Add(2);

IEnumerable vRes = (from n in vListwhere n == vSelectValue);
if (vRes.Count > 0) {
    vExist = true;
}

Ответ 6

Вы должны ссылаться на Selected not ids.Contains как на последнюю строку.

Я просто понял, что это проблема форматирования, из OP. Независимо от того, вы должны ссылаться на значение в Selected. Я рекомендую добавить некоторые вызовы Console.WriteLine, чтобы точно увидеть, что распечатывается в каждой строке, а также то, что каждое значение.

После вашего обновления: ids - пустой список, как это не бросает исключение NullReferenceException? Поскольку он никогда не инициализировался в этом кодовом блоке