gpt4 book ai didi

c# - 如何获得 2 个 IQueryable 方法来实现析取?

转载 作者:行者123 更新时间:2023-11-30 23:29:06 25 4
gpt4 key购买 nike

<分区>

如果这是一个简单的问题,我们深表歉意;假设我有一个带有 2 个方法的 EF Query 对象:

public static IQueryable<Animal> FourLegged(this IQueryable<Animal> query)
{
return query.Where(r => r.NumberOfLegs == 4);
}

public static IQueryable<Animal> WithoutTail(this IQueryable<Animal> query)
{
return query.Where(r => !r.HasTail);
}

现在,在我的服务层中,要得到没有尾部的四足动物,我可以这样做:

_animalService.Query()
.FourLegged()
.WithoutTail();

这将导致像这样的 sql 查询:

select * from Animal where NumberOfLegs = 4 AND HasTail = 0

如何使用 OR 代替这 2 种查询方法?我想要 4 条腿或没有尾部的动物

select * from Animal where NumberOfLegs = 4 OR HasTail = 0

在 Nhibernate 中我会使用一个简单的析取,但我在 EF 中找不到它。

谢谢


解决方案:我最终使用了 LinqKit predicates mentioned on this answer .它工作得很好,我也可以重用谓词。

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