在linq

时间:2019-03-23 11:12:23

标签: c# asp.net linq lambda

我需要获得两三年的数据,例如从'2017年1月到2019年3月'之类的时间。在我的查询中,我已将Year和Month的属性与SYear(从Year-2017),Tyear(到Year-2019)和SMonth(从Month-1(Jan)),TMonth(到Month-3(游行))。我的查询仅适用于类似年份的搜索,例如2017年1月至2017年12月。但不适用于2017年1月至2019年3月。

这是我的代码:

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年1月至2019年3月”,其中 SYear = 2017,TYear = 2019,SMonth = 1,TMonth = 3 ,并根据搜索获取数据。

我该怎么做,请帮忙。

1 个答案:

答案 0 :(得分:4)

想象一下,Year = 2017和Month = 9,而这在您想要的范围内,但是month = 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();