C #: вложенное условие If в LINQ

2

Я использую ниже LINQ Query, теперь я хочу, если еще условие внутри LINQ Query, как below-, как я могу добиться того же?

    if(stemming)
    highlightedText = c.Value.p_content != null && c.Value.p_content[0] != null ? c.Value.p_content[0] : string.Empty
    if(phoentic)
    highlightedText = c.Value.s_content != null && c.Value.s_content[0] != null ? c.Value.s_content[0] : string.Empty
    if(content)
    highlightedText = c.Value.content != null && c.Value.content[0] != null ? c.Value.content[0] : string.Empty

Полный код -

    var highlightedDataLst = objJson.highlighting.Select(c =>
    new finalOutput
    {
        highlightedKey = c.Key,                                   
        highlightedText = c.Value.content != null && c.Value.content[0] != null ? c.Value.content[0] : string.Empty
  }).ToList<finalOutput>();
  • 0
    Ваш вопрос мне совершенно неясен. Что вы подразумеваете под "я хочу, если еще внутри linq"? В чем проблема с вашим текущим кодом?
  • 1
    Результат вашего оператора if(stemming) всегда перезаписывается следующим оператором if / else.
Показать ещё 4 комментария
Теги:
linq

1 ответ

1
Лучший ответ

Хм, принимая удар, это может выглядеть примерно так:

var highlightedDataLst = objJson.highlighting.Select(c =>
new finalOutput
    {
        highlightedKey = c.Key,                                   
        highlightedText = (stemming ? c.Value.p_content?[0] : 
                          (phoentic ? c.Value.s_content?[0] :
                          (content  ? c.Value.content?[0] : null))) ?? ""
}).ToList<finalOutput>();

Вы можете упростить свои условия, используя нулевой условный оператор (? []) И нулевые операторы слияния (??).

  • 0
    Так что, если у вас есть 1000 подсветок, он будет проверять значения стемминга 1000 раз, даже если вы знаете, что оно всегда будет иметь одинаковое значение?
  • 0
    Это верно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню