Как проверить, что список содержит больше нуля ненулевых элементов с атрибутом MVC? - PullRequest
4 голосов
/ 08 декабря 2011

Я пытаюсь выполнить загрузчик файлов, который может принимать различное количество файлов.Все входные файлы имеют одинаковые имена, поэтому создайте список файлов, с которыми MVC3 с радостью связывается.

Итак, в моем контроллере у меня есть

public virtual ViewResult UploadReceive(IEnumerable<HttpPostedFileBase> Files ){

получает все необходимые файлыОднако все входные элементы пустого файла формы добавляют ноль.Это мешает моей основной непустой проверке списка в контроллере работать так, как я хочу.

Проверка приведена ниже:

public class EnsureMinimumElementsAttribute : ValidationAttribute
{
    private readonly int _minElements;
    public EnsureMinimumElementsAttribute(int minElements)
    {
        _minElements = minElements;
    }

    public override bool IsValid(object value)
    {
        var list = value as IList;
        if (list != null)
        {
            return list.Count >= _minElements;
        }
        return false;
    }
}

Любая идея, как изменить проверку для общего подсчета только ненулевые элементы?

1 Ответ

3 голосов
/ 08 декабря 2011

Если вы хотите считать только ненулевые объекты, вы можете использовать LINQ с IList, используя:

list.Cast<object>().Count(o => o != null)

В качестве альтернативы вы можете просто зациклить и сосчитать каждый ненулевой объект.

int count = 0;
foreach (var item in list)
{
    if (item != null)
        count++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...