LINQ-to-SQL Joins - PullRequest
       1

LINQ-to-SQL Joins

0 голосов
/ 15 июля 2011

У меня есть таблица под названием Payroll. Заработная плата может иметь много PayStubs. Другими словами, есть таблица PayStub, которая является дочерней сущностью Payroll. У PayStub есть дочерний объект с именем PayrollTax. Я хочу написать запрос LINQ-to-SQL, который получает все платежные ведомости, имеющие более одного налога на заработную плату. Я использую следующий запрос:

public IList<Payroll> GetPayrollsWithPayrollTaxes()
        {
            return (from payroll in ActiveContext.Payrolls
                    join payStub in ActiveContext.PayStubs on payroll.PayrollID equals payStub.PayrollID
                    where payStub.InternalPayrollTaxes.Count > 0
                    select payroll
                    ).ToList();
        }

Проблема в том, что между Payroll и PayStub существует отношение один ко многим, и в итоге я получаю один и тот же Payroll дважды. Я хочу уникальный список Payrolls.

Любые идеи и предложения приветствуются!

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Я думаю, что использование Any (EXISTS в SQL) может помочь вам здесь.

public IList<Payroll> GetPayrollsWithPayrollTaxes()
{
      return (from payroll in ActiveContext.Payrolls
              where ActiveContextPayStubs.Any(payStub => 
                 payroll.PayrollID == payStub.PayrollID && 
                 payStub.InternalPayrollTaxes.Any())
              select payroll
              ).ToList();
        }
0 голосов
/ 15 июля 2011

Вы пробовали .Distinct().ToList()?

Или вы можете добавить into после join следующим образом:

(from payroll in ActiveContext.Payrolls
 join payStub in ActiveContext.PayStubs on payroll.PayrollID equals payStub.PayrollID into payStubGroup
 where payStubGroup.Any(p => p.InternalPayrollTaxes.Any())
 select payroll
 ).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...