Я использую ниже LINQ Query, теперь я хочу выполнить условие if else внутри LINQ Query, как показано ниже - как я могу добиться того же?
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>();
Результат вашего оператора if (stemming)
всегда перезаписывается следующим оператором if / else.
@HimBromBeere: если вы видите мой полный код, я хочу добавить вышеупомянутое условие if else внутри этого кода, как этого можно достичь в запросе LINQ, о котором я упоминал?
@Erik: Нет, одно значение будет истинным за раз
К вашему сведению: вы можете заменить c.Value.content != null && c.Value.content[0] != null ? c.Value.content[0] : string.Empty
на c?.Value?.content?[0] ?? string.Empty
для краткости. docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
@John: я использую .Net 4.0
Хм, нанося удар, это может выглядеть примерно так:
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>();
Вы можете упростить свои условия, используя нулевой условный оператор (? []) И нулевые операторы объединения (??).
Значит, если у вас есть 1000 выделений, он будет проверять значения стемминга 1000 раз, даже если вы знаете, что оно всегда будет иметь одно и то же значение?
Мне ваш вопрос непонятен. Что вы имеете в виду, говоря «Я хочу, если еще внутри linq»? В чем проблема с вашим текущим кодом?