首页 > 解决方案 > Linq 查询根据一年的给定月份选择记录

问题描述

我正在编写 linq 查询,发现使用 linq 语法构建逻辑很困难。基本上我需要提取与 indexid 匹配的记录,并根据月份数组和年份字段中的月份过滤记录。如何在 linq 查询中检查月份数组

这是我正在尝试的,但不确定如何根据月份数组检查 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();
        }
}

标签: c#linq

解决方案


您可以简单地使用该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类型,因为月份是整数数组。


推荐阅读