我正在编写linq查询,发现很难使用linq语法构造逻辑。基本上,我需要提取与indexid匹配的记录,并根据月份数组和年份字段中的月份过滤记录。如何检查linq查询中的months数组
这是我正在尝试的方法,但不确定如何针对月份数组检查x.PriceDate.Month
private Tuple<double?, double?> GetBenchMarkByYear(int year, int benchMark1, int[] months)
{
Tuple<double?, double?> benchMarkReturns;
double[] temp1 = null;
var benchMark1Returns = new double?[] { };
benchMark1Returns = GetViewService<MV_INDEX_PERFORMANCE>()
.Where(x => x.Mtd != null && x.IndexId == benchMark1 && x.PriceDate.Year == year && x.PriceDate.Month ).Select(x => x.Mtd)
.ToArray();
}
}
答案 0 :(得分:0)
您可以简单地使用Any()
方法。
这意味着您的状况如下:
benchMark1Returns = GetViewService<MV_INDEX_PERFORMANCE>()
.Where(x => x.Mtd != null && x.IndexId == benchMark1 && x.PriceDate.Year == year && months.Any(m=> m == x.PriceDate.Month)).Select(x => x.Mtd)
.ToArray();
如果实体 x.PriceDate.Month 当然是类型为 int 的类型,则自几个月以来,如果是整数数组。