Member 13939297 Ответов: 1

Проверка того, является ли значение бита ложным с помощью ASP.NET MVC


Я пытаюсь проверить, является ли значение бита ложным, но мне кажется, что это не работает.
Я подключен к базе данных и работаю с entity framework.
Я генерирую список с помощью метода getall (), который возвращает полный список форм в базе данных. Затем я пытаюсь создать список foreach, который проверяет, является ли удаленное поле истинным или ложным.

Важно отметить, что в моей базе данных sql значение типа bit может быть равно null.

Что я уже пробовал:

public List<Form> GetAllForms()
{

    var list = GetAll();
    List<Form>filteredList = new List<Form>();

    foreach(var item in list)
    {
        bool checkingDelete = Convert.ToBoolean(item.Deleted);
        if(checkingDelete == false)
        {
                filteredList.Add(item);
        }

    }

1 Ответов

Рейтинг:
1

Richard Deeming

Предполагая, что собственность на вашем Form объект объявлен как bool? или Nullable<bool>, вы не можете использовать Convert.ToBoolean если значение равно null.

Вместо этого сравните значение с true или false:

foreach (var item in list)
{
    if (item.Deleted == false)
    {
        filteredList.Add(item);
    }
}

// Or, using LINQ:
List<Form> filteredList = list.Where(item => item.Deleted == false).ToList();
NB: Ценности, которые являются null не будет равен false, таким образом, эти элементы будут включены в отфильтрованный список. Если вы хотите исключить их, вы можете либо изменить свое состояние:
List<Form> filteredList = list.Where(item => item.Deleted == false || item.Deleted == null).ToList();

// Or:
List<Form> filteredList = list.Where(item => item.Deleted != true).ToList();
Или вы можете срасталось значение, допускающее значение null :
List<Form> filteredList = list.Where(item => item.Deleted.GetValueOrDefault() == false).ToList();

// Or:
List<Form> filteredList = list.Where(item => !item.Deleted.GetValueOrDefault()).ToList();

// Or:
List<Form> filteredList = list.Where(item => (item.Deleted ?? false) == false).ToList();

// Or:
List<Form> filteredList = list.Where(item => !(item.Deleted ?? false)).ToList();