[英]Entity Framework Core 5.0 conditional linq expression does not process conditional part
我正在使用连接到 PostrgreSQL 13 的 EF Core 5.0。我正在尝试有条件地将OrderBy()
和Take()
添加到这样的查询中:
public IEnumerable<Person> GetPeople(int age, int limitCount)
{
IQueryable<Person> peopleQuery = _context.people.Where(p => p.Age == age);
if (limitCount > 0)
peopleQuery.OrderBy(p => p.DateAddedUTC).Take(limitCount);
System.Diagnostics.Debug.WriteLine(peopleQuery.ToQueryString());
return peopleQuery;
}
无论limitCount
值如何,我的结果都没有限制或排序; ToQueryString()
返回:
SELECT p.id, P.name, P.age
FROM people AS p
WHERE (p.age = @__age_0))
但是如果limitCount > 0
,我想要这样的东西:
SELECT p.id, P.name, P.age
FROM people AS p
WHERE (p.age = @__age_0))
ORDER BY p.date_added_utc
LIMIT @__p_1
我认为 linq 查询可以像这样组合。 我什至尝试过ToList()
来查看是否可以修复它,但没有任何改变。
如何在不重复代码的情况下实现我的目标?
在if (limitCount > 0)
下,您需要像这样分配peopleQuery
:
peopleQuery = peopleQuery.OrderBy(p => p.DateAddedUTC).Take(limitCount);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.