Вы также можете использовать отражение в этих условиях. Я столкнулся с подобной проблемой, когда я фильтровал результаты по деталям пользователя с несколькими полями. Если пользователь не вводит ничего в поля поиска, запрос возвращает все результаты из базы данных, которая не была предназначена для результата. Я задал вопрос и впервые встретился с размышлениями.
Например:
у вас есть модель UserDetail, как показано ниже
public class UserDetail{
public string FirstName {get;set;}
public string LastName {get;set;}
public string Country {get;set;}
}
Тогда давайте предположим, у вас есть объект userDetail и вы хотели бы, чтобы проверить, чтобы убедиться, что ни один из свойств в объекте UserDetail является null или empty, используя LINQ.
return userDetail.GetType().GetProperties()
.Where(pi => pi.GetValue(userDetail) is string)
.Select(pi => (string) pi.GetValue(userDetail))
.All(value => !String.IsNullOrEmpty(value));
Этот метод вернет true, если ни одно из свойств строки объекта userDetail не имеет значения null или пусто. Если все свойства содержат что-то, то это выводит true.
логика была бы:
public bool AllUserDetailsContainSomething(UserDetail userDetail){
return userDetail.GetType().GetProperties()
.Where(pi => pi.GetValue(userDetail) is string)
.Select(pi => (string) pi.GetValue(userDetail))
.All(value => !String.IsNullOrEmpty(value));
}
Тогда вы можете вызвать этот метод
if(AllUserDetailsContainSomething(userDetail)){
//do something
}
что вы используете? WPF или формы? – Naren
'string.IsNullOrEmpty'. – Arran
Определите «лучше». Является ли код понятным и выполняет ли он свою работу прямо сейчас? Я бы сказал, что ответ на оба из них «да», и что вам не нужно ничего менять об этом. (Если вы не планируете резко увеличивать количество полей.) – Omaha