gpt4 book ai didi

c# - 查询的技术和模式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:28:43 24 4
gpt4 key购买 nike

我从 C# 开始,现在我将使用 Java。我需要在 Java 中实现一个简单的 linq 查询(过滤器 + 获取)。

C# 等价物可以是:

public interface IPriceRule
{
bool IsMatch(OrderItem item);
decimal CalculatePrice(OrderItem item);
}
//
_pricingRules = new List<IPriceRule>();
//...
public decimal CalculatePrice(OrderItem item)
{
return _pricingRules.First(r => r.IsMatch(item)).CalculatePrice(item);
}

知道java没有Linq,第一个想到的就是扩展方法,但也没有。然后我必须做所有(也许我因为简单而养成了坏习惯):

@Override
public BigDecimal CalculatePrice(OrderItem item) {
IPriceRule _selectedRule = getFirstItemThatMatch(_pricingRules, item);
if(_selectedRule != null)
return _selectedRule.CalculatePrice(item);
else
return BigDecimal.ZERO;
}

private IPriceRule getFirstItemThatMatch(List<IPriceRule> prmCollection, OrderItem item) {
IPriceRule _result = null;
for(IPriceRule itemPriceRule : prmCollection) {
if(itemPriceRule.IsMatch(item)) {
_result = itemPriceRule;
break;
}
}
return _result;
}

我不相信这个 Java 代码是等价的、最优的。也许存在一种技术可以在算法复杂度和编码速度方面对其进行优化和改进。

我相信与您可以编写的代码相比,.net 优化和规范化查询并使用 linq 将其带给您。

最佳答案

如您所知,LINQ 在 Java 中不可用 (reference)。

但是您可以将任何 ORM 用于数据库层,如 Hibernate/JPA。在 .NET 中,我使用了 nHibernate,它相当于 Java 中的 hibernate (所以我很容易下车)。

但 LINQ 不是 ORM(抽象类),因此您不会喝完酒。

关于c# - 查询的技术和模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830480/

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