Не могу получить результат желаемого запроса в linq - PullRequest
1 голос
/ 23 марта 2019

Мне нужно получить данные за два или три года, например, с 'январь 2017 года по март 2019 ' или около того. В моем запросе я разделил свойства для года и месяца, которые сравниваются с SYear (с года - 2017), Tyear (с годом - 2019) и SMonth (с месяца - 1 (январь)), TMonth (с месяцем - 3 ( Марш)). Мой запрос работает только для поиска в аналогичном году, например, с января 2017 года по декабрь 2017 года. Но не работает с января 2017 года по март 2019 года.

Вот мой код:

var Bim = new BillingInfoPerMonthManager().GetAll().Where(x => (Convert.ToInt64(x.Year) >= SYear && Convert.ToInt64(x.Year) <= TYear) && (Convert.ToInt64(x.Month) >= SMonth && Convert.ToInt64(x.Month) <= TMonth)).ToList();

Мне нужно выполнить поиск, например, «январь 2017 г. по март 2019 г.», где SYear = 2017, TYear = 2019, SMonth = 1, TMonth = 3 и получение данных в соответствии с поиском.

Как я могу это сделать, пожалуйста, помогите.

1 Ответ

4 голосов
/ 23 марта 2019

Представьте, что Год = 2017 и Месяц = ​​9, в то время как это в нужном диапазоне, но месяц = ​​9 не подходит Convert.ToInt64(x.Month) >= SMonth && Convert.ToInt64(x.Month) <= TMonth

попробуйте что-то вроде этого:

var Bim = new BillingInfoPerMonthManager().GetAll()
 .Where(x => (int.Parse(x.Year) * 12 + int.Parse(x.Month)) >= SYear * 12 + SMonth
  && (int.Parse(x.Year) * 12 + int.Parse(x.Month)) <= TYear * 12 + TMonth).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...