Вы можете использовать var
с условным оператором:
var query = year == "2011" ?
from c in _context.Wxlogs
where c.LogYear == year
&& (SqlFunctions.DatePart("Month", c.LogDate2) == m3)
&& c.LogTime.Contains("23:59")
orderby c.LogDate2
let LogDate = c.LogDate2
select new {
LogDate,
c.Rain_today
});
// Second part of conditional
: from c in _context.Wxlogs
where c.LogYear == year
&& c.LogMonth == mm
&& c.LogTime.Contains("08:59")
orderby c.LogDate2
let LogDate = EntityFunctions.AddDays(c.LogDate2, -1)
select new {
LogDate,
c.Rain_today
});
Это не идеально, но так как вы также меняете бит "LogDate" в зависимости от года, это, вероятно, самый простой подход - два запроса отличаются слишком большим количеством мест для извлечения в нормальный способ. (Это не так, как если бы вы на самом деле только что получили условное предложение «где», как подсказывает ваш заголовок.)
Причина, по которой вам нужно var
, заключается в том, что вы проецируете на анонимный тип. Если вы этого не делаете, вы можете использовать блок if / else. Есть еще способы, которыми вы можете сделать это, но это немного болезненно.