首页 > 解决方案 > 由于某种原因,使用带有 2 个 Where 子句的 LINQ 方法将不起作用

问题描述

我有一个这样的 LINQ 方法:

List<string> paths = db.ClientStatement_Inventory
                     .Where(x => x.statementYear == year)
                     .Select(c => c.statementPath).ToList();

上述方法效果很好,它根据检查的年份将语句路径放入数据库中的“路径”中。

出于某种原因,当我添加另一个 where 子句时,它不会联系数据库并将任何语句路径放入变量“paths”中。

这是我的第二个 linq 方法:

List<string> paths = db.ClientStatement_Inventory
                     .Where(x => x.statementYear == year)
                     .Where(x => x.statementMonth == month)
                     .Select(c => c.statementPath).ToList();

我将年份和月份设置为这样的字符串:

for (int y = 0; y < years.Length; y++)
            {
                var year = "";
                if (years.ToString() != "")
                {
                    year = years[y];
                }

我尝试了多种不同的方法来执行来自不同堆栈溢出问题的两个 where 子句,但似乎没有任何效果。调试和单步执行我的代码时,我没有收到任何错误消息。

标签: c#entity-frameworklinq

解决方案


If this was LINQ to objects, this would work. But because this is Entity Framework... you never know. Your SQL is not built correctly. This is it. Do this

.Where(x => x.statementYear == year && x.statementMonth == month)

推荐阅读