gpt4 book ai didi

c# - 有没有更好的方法来缩短这个 LINQ 语句?

转载 作者:行者123 更新时间:2023-12-02 21:31:22 26 4
gpt4 key购买 nike

var filteredItemNumber = 0;
if (!string.IsNullOrEmpty(searchTerm))
{
filteredItemNumber =
this._objectsRep.Find(
r =>
r.ObjectTitle.StartsWith(searchTerm) && r.CreatedDate >= timePeriod.Start
&& r.CreatedDate <= timePeriod.End).Count();
}
else
{
filteredItemNumber =
this._objectsRep.Find(t => t.CreatedDate >= timePeriod.Start && t.CreatedDate <= timePeriod.End)
.Count();
}

我确信一定有一种更短的方法来摆脱 if 语句,但我不知道如何做。当我使用以下代码时,过滤返回的结果与我预期的不同。也许括号位置不对?

this._objectsRep.Find(r =>
searchTerm == null || r.ObjectTitle.StartsWith(searchTerm) && r.CreatedDate >= timePeriod.Start
&& r.CreatedDate <= timePeriod.End).Count()

我想要实现的是,如果 serchTerm 为空或 null,则忽略该过滤器,但仅使用日期范围。

谢谢

最佳答案

您不需要List.Find它返回一个新列表,您可以使用 LINQ 来计数:

int filteredItemNumber = _objectsRep.Count(r => 
(string.IsNullOrEmpty(searchTerm) || r.ObjectTitle.StartsWith(searchTerm))
&& r.CreatedDate >= timePeriod.Start
&& r.CreatedDate <= timePeriod.End);

关于c# - 有没有更好的方法来缩短这个 LINQ 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22223151/

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