У меня есть список тем 'subjectList'. Я хочу получить значение на основе двух условий, например, если subjectValue!=null, затем выберите subjectValue, иначе, если тема isDefault=true, затем выберите subjectDefaultCode, я написал отдельный запрос LINQ для обоих условий. это, но я не понимаю, как применить оба условия в одном запросе.? Взгляни.
string subjectValueDropDown = string.Empty;
Первое условие.
subjectValueDropDown = string.Join(",", subjectList.Where(x => x.SubjectValue != null).Select(k => k.SubjectValue).ToArray());
Второе условие.
subjectValueDropDown = string.Join(",", subjectList.Where(x => x.IsDefault == true).Select(k => k.subjectDefaultCode).ToArray());
Возможности:
Subject1 SubjectValue=null , isDefault=false
Subject2 SubjectValue=Maths , isDefault=false
Subject3 SubjectValue=null , isDefault=true
Subject4 SubjectValue=null , isDefault=false
В этой или другой ситуации, когда любой из субъектов имеет SubjectValue!=null, я не хочу, чтобы условие isDefault выполнялось.
Заранее спасибо.
Обновлено: вывод должен быть таким же, как в следующем запросе:
subjectValueDropDown = string.Join(",", subjectList.Where(x => x.SubjectValue != null).Select(k => k.SubjectValue).ToArray());
if(subjectValueDropDown==""){
subjectValueDropDown = string.Join(",", subjectList.Where(x => x.IsDefault == true).Select(k => k.subjectDefaultCode).ToArray());
}
Можно ли объединить оба запроса в один запрос, чтобы получить ожидаемый результат.
SubjectValue
дважды? (Логика подсказывает, что после!= null
и||
вы знаетеSubjectValue == null
, так что тест будет потрачен впустую: просто выполнитеx.SubjectValue !=null || x.IsDefault
.) Не переключайтесь сx
наk
— лучше все же использоватьs
вместоx
оба раза. Какова цельOfType
в вашем ответе? Зачем использоватьToArray
, когда есть перегрузка дляString.Join
, которая принимаетIEnumerable
? 23.02.2021