объединение возвращает 0, используя DefaultIfEmpty () - PullRequest
0 голосов
/ 24 марта 2019

У меня есть запрос содержит более одного левого внутреннего соединения и возвращает список он соединяется с таблицей PayrollTransactions, он возвращает o, поскольку у него нет данных, хотя это сжатие мне нужно, чтобы список возвращался во всех случаях, даже когда второе соединение пусто

        public List<PayrollElementsViewModel> GetAllPayrollRunDetails(int? PayrollrollRunID)
    {
          IQueryable<PayrollElementsViewModel> List =
                (from R in database.PayrollElements
                 where R.Deleted == false
                 && R.PayrollElementsPayrollRunID == PayrollrollRunID

                 join Emp in database.Employee on R.PayrollElementsIDEmployeeID equals Emp.EmployeeID
                 into g
                 from Emp in g.DefaultIfEmpty()

                 join tran in database.PayrollTransactions on Emp.EmployeeID equals tran.PayrollTransactionsEmployeeID
                 into g6
                 from tran in g6.DefaultIfEmpty()
                 where tran.PayrollTransactionsPayrollRunID == PayrollrollRunID

                 select new PayrollElementsViewModel
                 {
                     PayrollElementsPayrollRunID = PayrollrollRunID,
                     PayrollElementsEmployeeID = Emp.EmployeeID,
                     PayrollElementsEmployeeName = Emp.EmployeeName,
                     PayrollElementsEmployeeFingerPrint = Emp.EmployeeFingerPrint,
                     PayrollElementsStartDate = R.PayrollElementsStartDate,
                     PayrollElementsEndDate = R.PayrollElementsEndDate,
                     PayrollElemenTsransactionsValue = tran.PayrollTransactionsValue
                 });

            var results = List.ToList();
            return (results);
    }

Мне нужно вернуть. List содержит данные, так как возвращает 0 при объединении с payrolltransation, если оно содержит o

1 Ответ

0 голосов
/ 24 марта 2019

это решено перемещением Условие во втором соединении с выбором должно быть

       join tran in database.PayrollTransactions on Emp.EmployeeID equals tran.PayrollTransactionsEmployeeID
             into g6
             from tran in g6.DefaultIfEmpty()

             select new PayrollElementsViewModel
             {
                 PayrollElemenTsransactionsValue = tran.PayrollTransactionsPayrollRunID == PayrollrollRunID?tran.PayrollTransactionsValue  : 0,
             });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...