gpt4 book ai didi

c# - 计算复杂的 lambda 表达式

转载 作者:行者123 更新时间:2023-12-03 03:12:06 25 4
gpt4 key购买 nike

我有一个 lambda 表达式,我想通过组合内部的两个函数调用来缩短它。如果您在下面的代码中看到我正在调用 this.adgroupRepository.GetBidRange 两次。必须有一种方法将这些调用合并为一个,并且只从内部传递 FloorValue 和 CeilingValue。

有人可以帮忙吗?

new JsonResult
{
Data = result.Data.Where(x => x.Bidding != null).Select(
x => new
{
x.ID,
x.Name,
BidRange = new
{
FloorValue = (x.Bidding.FloorPrice != null) ? x.Bidding.FloorPrice : this.adgroupRepository.GetBidRange(this.contextProvider.CurrentAccount.CurrencyCode, x.PricingModel, x.Bidding.Type).FloorValue,
CeilingValue = (x.Bidding.CeilingPrice != null) ? x.Bidding.CeilingPrice : this.adgroupRepository.GetBidRange(this.contextProvider.CurrentAccount.CurrencyCode, x.PricingModel, x.Bidding.Type).CeilingValue
},
DefaultBid = x.Bidding.BroadBid
})
};

最佳答案

您始终可以使用 lambda 语句来代替表达式。这允许您编写代码块,创建局部变量,然后返回结果。您还可以使用 null 合并运算符 ??,而不是带有 null 检查的条件运算符。

new JsonResult
{
Data = result.Data.Where(x => x.Bidding != null).Select(
x =>
{
var bidRange =
x.Bidding.FloorPrice == null
|| x.Bidding.CeilingPrice == null ?
this.adgroupRepository.GetBidRange(
this.contextProvider.CurrentAccount.CurrencyCode,
x.PricingModel,
x.Bidding.Type) :
null;
return new
{
x.ID,
x.Name,
BidRange = new
{
FloorValue = x.Bidding.FloorPrice ?? bidRange.FloorValue,
CeilingValue = x.Bidding.CeilingPrice ?? bidRange.CeilingValue
},
DefaultBid = x.Bidding.BroadBid
};
})
};

关于c# - 计算复杂的 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36572753/

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