Nano Hash - криптовалюты, майнинг, программирование

Как применить условие else if к запросу LINQ?

У меня есть список тем '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());
}

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


  • subjectList это список какого класса? Я хочу увидеть это. 21.02.2021
  • @IvanKhorin Это класс модели. (List<SubjectValuesViewModel> subjectList) это то, что у меня есть в параметре метода. 21.02.2021
  • Я изо всех сил пытаюсь понять вопрос, не могли бы вы пояснить, что вы пытаетесь сделать? Это запрос linq или запрос структуры объекта, который вы не можете перевести в соответствующий синтаксис? 21.02.2021
  • @FilipCordas Это просто: мы получили subjectList из хранимой процедуры и передали этот список в этот метод, где я должен получить subjectValueDropDown. 21.02.2021
  • Чем Subject 1 отличается от Subject 4? Не могли бы вы поделиться с нами определением структуры SubjectValuesViewModel? 22.02.2021
  • Ваш окончательный выходной код не отражает описание вашей проблемы. Пожалуйста, исправьте код или описание, чтобы оно было правильным. Ваш исходный код также не соответствует описанию - он не реализует остальное должным образом. 23.02.2021

Ответы:


1

Попробуйте это, это было протестировано в Visual Studio, и значения такие же, как в вашем обновлении:

subjectValueDropDown = string.Join(",", 
subjectList
.Where(x =>
                (x.SubjectValue != null)
                || (x.SubjectValue == null && x.IsDefault)
    
    ).Select(k =>
       k.SubjectValue != null? k.SubjectValue : k.SubjectDefaultCode
      )
      .OfType<string>()
  .ToArray());

21.02.2021
  • Мне нужно выбрать разные значения столбца в обоих условиях: сначала я хочу выбрать SubjectValue, а во втором я хочу выбрать значение столбца subjectDefaultCode. 21.02.2021
  • Это не то, чего он хочет 21.02.2021
  • Какой тип у SubjectValue и subjectDefaultCode? 21.02.2021
  • @Sergey SubjectValue и subjectDefaultCode имеют строковый тип. 21.02.2021
  • @TauFeeQ Я обновил свой ответ. Это работает в моем VS2019. 21.02.2021
  • Почему вы тестируете SubjectValue дважды? (Логика подсказывает, что после != null и || вы знаете SubjectValue == null, так что тест будет потрачен впустую: просто выполните x.SubjectValue !=null || x.IsDefault.) Не переключайтесь с x на k — лучше все же использовать s вместо x оба раза. Какова цель OfType в вашем ответе? Зачем использовать ToArray, когда есть перегрузка для String.Join, которая принимает IEnumerable? 23.02.2021
  • Все для заливки в моем запросе. Если вы что-то измените, это не будет работать должным образом. Какая разница, если SelectVlaue проверяет дважды. Он прошел уже тысячи тестов от Db до этого кода. 23.02.2021
  • Я провел свое воскресенье, занимаясь исследованиями и создавая этот код, но я даже не получил за это благодарности. 23.02.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..