繁体   English   中英

Entity Framework Core 5.0 条件 linq 表达式不处理条件部分

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM