使用 Entity Framework Core 和 LINQ 查询,从两个关联表中获取满足条件的记录:所有 MerchantId 为 114 的 MemberCoupon 或没有关联 MemberCouponApplyMerchant 记录的 MemberCoupon。

using System.Linq;

public class MyDbContext : DbContext
{
    public DbSet<MemberCoupon> MemberCoupons { get; set; }
    public DbSet<MemberCouponApplyMerchant> MemberCouponApplyMerchants { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // 配置数据库连接
        optionsBuilder.UseSqlServer("YourConnectionString");
    }
}

public class MemberCoupon
{
    public long Id { get; set; }
    public string Name { get; set; }
    public long MemberId { get; set; }
}

public class MemberCouponApplyMerchant
{
    public long Id { get; set; }
    public long MemberCouponId { get; set; }
    public long MerchantId { get; set; }
}

public class Program
{
    public static void Main()
    {
        using (var dbContext = new MyDbContext())
        {
            var query = from memberCoupon in dbContext.MemberCoupons
                        where !dbContext.MemberCouponApplyMerchants.Any(mca => mca.MemberCouponId == memberCoupon.Id)
                              || dbContext.MemberCouponApplyMerchants.Any(mca => mca.MerchantId == 114)
                        select memberCoupon;

            var result = query.ToList();
            // 使用result进行后续操作
        }
    }
}

在上面的代码中,我们创建了一个MyDbContext类来表示数据库上下文,包含了MemberCouponsMemberCouponApplyMerchants两个DbSet属性。然后,在Main方法中,我们使用LINQ查询来获取满足条件的MemberCoupon列表。

查询条件!dbContext.MemberCouponApplyMerchants.Any(mca => mca.MemberCouponId == memberCoupon.Id)表示MemberCoupon没有任何关联的MemberCouponApplyMerchant。查询条件dbContext.MemberCouponApplyMerchants.Any(mca => mca.MerchantId == 114)表示MemberCouponApplyMerchantMerchantId等于114。通过使用||运算符,我们将这两个条件组合在一起。

最后,我们使用ToList方法执行查询并将结果存储在result列表中,你可以根据需要对result进行后续操作。请记得根据你的实际情况修改数据库连接字符串。


原文地址: https://www.cveoy.top/t/topic/pHsI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录