Linq查询以根据一年中的给定月份选择记录

时间:2019-04-12 22:13:04

标签: c# linq

我正在编写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();
        }
}

1 个答案:

答案 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 的类型,则自几个月以来,如果是整数数组。