将函数转换为 linq 语句
Convert function to linq statment
我的数据库中有三个表 Subscriber
、Subscription
和 Branch
。
每个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();
我的数据库中有三个表 Subscriber
、Subscription
和 Branch
。
每个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();