将函数转换为 linq 语句

Convert function to linq statment

我的数据库中有三个表 SubscriberSubscriptionBranch。 每个Subscriber在指定的Branch中可以有一个Subscription。 我想列出在定义的分支中没有订阅的所有订阅者。为此,我在下面编写了函数,但我知道使用 LINQ 运算符可以更快速、更高效地编写它,但我没有足够的知识来执行此操作。

你能把这个函数改成 LINQ 语句吗?

List<Subscriber> subscribersWithNoSubscriptinoInThisBranch(int branchId)
{
    DbSet<Subscriber> allSubscribers = db.Subscriber;
    List<Subscriber> subscribers = new List<Subscriber>();
    foreach (Subscriber s in db.Subscriber)
    {
        ICollection<Subscription> subscriptions = s.Subscription;
        if (subscriptions.Where(su => su.branchId == branchId).Count() == 0)
        {
            subscribers.Add(s);
        }
    }
    return subscribers;
}

我相信以下是您想要的:

List<Subscriber> subscribers = allSubscribers
    .Where(s => !s.Subscription.Any(su => su.branchId == branchId))
    .ToList();