vakaskhan Ответов: 1

Присоединяйтесь к linq, имеющему несколько условий с не равным условием


IQueryable<employee> emp = (from x in db.GetTable<employee>()
                                    join y in db.employesalaries on new (x.Id,Datetime.now.Month) equals (y.employe_id,y.paymentdate.Mont) into ps
                                    from salary in ps.DefaultIfEmpty();
                                    where x.branch_id == branchId && salary.payment_date.Month != DateTime.Now.Month
                                    select x);

Я хочу, чтобы все сотрудники получили неоплаченную оплату за текущий месяц .а также если это его первый платеж, то демонстративно записи не будет в db.emloyesalaries . пожалуйста, помогите мне, как я могу использовать это с помощью linq.

Что я уже пробовал:

в этом запросе . я всегда получаю записи, даже когда оплачиваю счет текущего месяца . кроме того, если id не находится в db .employesalaries .i can see employee.

1 Ответов

Рейтинг:
0

Ehsan Sajjad

Вам нужно проверить, есть ли запись в emplyeesalaries таблица месяц меньше предыдущего месяца, который можно проверить следующим образом:

int currentMonth = Datetime.Now.Month;
int previousMonth = Datetime.Now.AddMonths(-1).Month;
IQueryable<employee> emp = (from x in db.GetTable<employee>()
                            join y in db.employesalaries 
                            on new {x.Id,currentMonth} 
                            equals new {y.employe_id,y.paymentdate.Month} into ps
                            from salary in ps.DefaultIfEmpty();
                            // for first salary and current month salary not deposited
                            where salary ==null 
                            && x.branch_id == branchId 
                            select x);


Maciej Los

Выглядит многообещающе!
А5!