gpt4 book ai didi

c# - 使用 LINQ 从表中获取第一个值,其中值匹配或为 null

转载 作者:行者123 更新时间:2023-11-30 22:51:23 26 4
gpt4 key购买 nike

我有一张表,我想从中得到这样的值。我需要价格信息 w.r.t.状态和供应商,例如,我想计算一个状态的价格,我的表有数据,比如供应商有价格或默认价格。

enter image description here

因此,如果我在纽约寻找 VendorA,我应该得到 2000。如果我在洛杉矶寻找 VendorA,它会给我 1500。我可以得到这个

public long GetPrice(string State, string Vendor){
var value = this.context.table.FirstOrDefault(a=>a.vendor == Vendor && a.state == State);

if(value == null){
value = this.context.table.FirstOrDefault(a=>a.vendor == null && a.state == State)?.Price;
}
}

GetPrice("NY","VendorA"); //This should give me 2000.
GetPrice("LA","VendorA"); // This should give me 1500

请建议是否有一些更优化的方式,意味着我可以在单个数据库调用中获得。

最佳答案

您可以在一个查询中使用:

private static long? GetPrice(string state, string vendor)
{
return table
.Where(x => x.State == state)
.OrderByDescending(x => x.Vendor)
.FirstOrDefault(x => x.State == state)
?.Price;
}

过滤掉匹配状态下的所有价格,按供应商降序排序(使空值出现在最后),并从中选择与该状态匹配的第一个或默认项目。

关于c# - 使用 LINQ 从表中获取第一个值,其中值匹配或为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59261937/

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