gpt4 book ai didi

c# - Linq FindWhere 子句和 bool 过滤器?

转载 作者:行者123 更新时间:2023-11-30 14:13:00 24 4
gpt4 key购买 nike

我必须将以下内容添加到此过滤器,

“如果传入的 CountryID 等于 (999),则搜索应该搜索所有国家,而不是按国家过滤。”

我目前拥有的是这个,这让我很困惑。

var query = rep.
FindWhere(c =>
(
countryID.HasValue == false ||
c.CityID == null ||
c.Countries.ID == countryID
)
&&
(
mediaTypeID == 0 ||
c.MediaTypeID == mediaTypeID
)
&& c.Active);

我假设如果第一个括号中的任何条件为真,那么它将匹配所有国家?!如果是这样,那么我可以在第一个括号中添加一个额外的表达式来检查 countryID 999?

附言。查找位置:

public IQueryable<T> FindWhere(Expression<Func<T, bool>> predicate) 
{
return _dbSet.Where(predicate);
}

最佳答案

rep.FindWhere(c => (c.CityID == null || !countryID.HasValue ||
countryID == 999 || c.Countries.ID == countryID) &&
(mediaTypeID == 0 || c.MediaTypeID == mediaTypeID))

顺便说一句,你的条件逻辑真的很难理解。考虑重构您的代码。

关于c# - Linq FindWhere 子句和 bool 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15640405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com