gpt4 book ai didi

c# - 查询中的多个条件检查?

转载 作者:行者123 更新时间:2023-11-30 20:21:47 34 4
gpt4 key购买 nike

我有以下查询,其中我从 UI 传递了 4 个参数。 BU 和 Region 在 UI 中有单选按钮选项(All、Option1、Option2、Option3 等)。选项 1 - 3 是数据中的值,而“全部”不是。

有没有办法更有效地编写以下内容?例如,如果 BU 或 Region 值是“来自 UI”的“全部”(不是数据集中的值),是否有一个字符我可以分配给 bu 或 region 如果全部被选中,以便查询知道选择所有的值?

我不知道是否有这样的事情,但我想避免做类似下面的事情。

     public string GetAvgSeatPrice(string bu, string region, DateTime? startDate, DateTime? endDate)
{

if (bu.Equals("All"))
{
var averageSeatPrice = (from r in db.Registrations
where
//r.BusinessUnit.Equals(bu) &&
r.Region.Equals(region) &&
r.StartDate >= startDate &&
r.EndDate <= endDate &&
r.ActualPrice > 0
select r.ActualPrice).Average();

var AvgSeatPrice = "$" + string.Format("{0:0.00}", averageSeatPrice);

return AvgSeatPrice;
}
else if (region.Equals("All"))
{
var averageSeatPrice = (from r in db.Registrations
where
r.BusinessUnit.Equals(bu) &&
// r.Region.Equals(region) &&
r.StartDate >= startDate &&
r.EndDate <= endDate &&
r.ActualPrice > 0
select r.ActualPrice).Average();

var AvgSeatPrice = "$" + string.Format("{0:0.00}", averageSeatPrice);

return AvgSeatPrice;
}
else if (bu.Equals("All") && region.Equals("All"))
{
var averageSeatPrice = (from r in db.Registrations
where
//r.BusinessUnit.Equals(bu) &&
// r.Region.Equals(region) &&
r.StartDate >= startDate &&
r.EndDate <= endDate &&
r.ActualPrice > 0
select r.ActualPrice).Average();

var AvgSeatPrice = "$" + string.Format("{0:0.00}", averageSeatPrice);

return AvgSeatPrice;
}
else
{
var averageSeatPrice = (from r in db.Registrations
where
r.BusinessUnit.Equals(bu) &&
r.Region.Equals(region) &&
r.StartDate >= startDate &&
r.EndDate <= endDate &&
r.ActualPrice > 0
select r.ActualPrice).Average();

var AvgSeatPrice = "$" + string.Format("{0:0.00}", averageSeatPrice);

return AvgSeatPrice;
}

}

}

最佳答案

只需这样做:

public string GetAvgSeatPrice(string bu, string region, DateTime? startDate, DateTime? endDate)
{
var averageSeatPrice = (
from r in db.Registrations
where (bu == "ALL" || r.BusinessUnit.Equals(bu))
&& (region == "ALL" || r.Region.Equals(region))
&& r.StartDate >= startDate
&& r.EndDate <= endDate
&& r.ActualPrice > 0
select r.ActualPrice).Average();

var AvgSeatPrice = "$" + string.Format("{0:0.00}", averageSeatPrice);

return AvgSeatPrice;
}

由于 OR (||),如果选择是“ALL”,则永远不会检查第二个条件,并且不会通过给定属性缩小选择范围。 It is checked only if the selection is NOT "ALL"and in such case the selection is narrowed down.

关于c# - 查询中的多个条件检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33222065/

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