gpt4 book ai didi

c# - Linq - 获取介于下限和上限之间的值

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:56 24 4
gpt4 key购买 nike

我有一个费用列表(linq to sql 实体 - 如果相关)- 上限费用、下限费用(均为十进制值)。我正在传递一个 property value - 比如 90000 我想检查这个 propertybest 是否匹配 one (或费用列表中的第一个值)。

费用可能类似于...

(较低费用 - 较高费用)

0 - 50000
50001 - 75000
75001 - 90000
90001 - 140000
190000 - 500000

在这些值中,90000 最适合 75001 - 90000 band,所以我想提取那个 FeeDetail 实体。我真的不知道要使用什么运算符,感谢任何帮助,到目前为止我的代码是......

    [Test]
public void GetFeeRange()
{
const int id = 44;
var propValue = 90000;

//get a specific fee entity, then get the range of fee details...
var recommendedFees = RepoSession.All<Fee>()
.Where(x =>
x.ClientSurveyTypeID == id)
.GroupJoin(_readOnlySession.All<FeeDetail>(),
x => x.FeeID,
y => y.FeeID,
(x, y) => new
{
FeeDetail = y.DefaultIfEmpty()
})
.Select(x => x.FeeDetail)
.SingleOrDefault();

Assert.IsNotNull(recommendedFees);

//order fees by lowest fee - *the bit I am stuck on*
var bestMatch = recommendedFees.OrderBy(x => x.Lower)
.TakeWhile(x => propValue >= x.Lower || propValue <= x.Upper)
.FirstOrDefault();



}

问题 - 我将如何执行范围检查?我需要什么 linq 运算符?不确定我是否应该执行 takewhile,从该范围内获得最好的费用?

注意:费用很容易...

(较低费用 - 较高费用)

0 - 50000
50001 - 75000
95001 - 140000
190000 - 500000

如果找到最佳匹配项,将其拉出获得最接近的匹配项...也许我可以显示一个可用匹配项列表,如果一个不(足够接近)完全匹配项

最佳答案

只是一个简单的 .Where 应该没问题:

var bestMatch = recommendedFees
.Where(x => propValue >= x.Lower && propValue <= x.Upper)
.OrderBy(x => x.Lower)
.FirstOrDefault();

关于c# - Linq - 获取介于下限和上限之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9017803/

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