Функция преобразования в linq statment - PullRequest
0 голосов
/ 02 марта 2020

В моей базе данных три таблицы Subscriber, Subscription и Branch. Каждый Subscriber может иметь один Subscription в указанном Branch. Я хочу перечислить всех подписчиков, у которых нет подписки в определенной ветке. Для этого я написал ниже функцию, но я знаю, что ее можно написать более кратко и эффективно с помощью операторов 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;
}

1 Ответ

3 голосов
/ 02 марта 2020

Я считаю, что вы хотите следующее:

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