dawood abbas Ответов: 2

Как объединить две объединенные таблицы с внутренним запросом в linque?


Как объединить две объединенные таблицы с внутренним запросом в linque? то же самое, что и ниже, я пробовал в sql server

select refCustGrouped.Extension,refCustGrouped.CreatedOn,users.MobileNo,users.Name,cust.Status,users.IsDelete							
					from  [there_crm].[therecrm_admin].[User] users 
							join [there_crm].[therecrm_admin].[Customer] cust on users.uID = cust.uID
							join (
											select top 1 with TIES refCust.cuRefID,refCust.MobileNo,
											refCust.CreatedOn,refCust.Extension
											from [there_crm].[therecrm_admin].[RefCustomer] refCust
											ORDER BY
											ROW_NUMBER() OVER(PARTITION BY refCust.MobileNo ORDER BY refCust.cuRefID DESC)
							) refCustGrouped on refCustGrouped.MobileNo = users.MobileNo
					where users.IsDelete Is NULL or users.IsDelete = 0 and users.rID = 3 and cust.Status = 'INV' or cust.Status = 'VIS'


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

var res = (from cust in CRMEntites.Customers
                       join user in CRMEntites.Users on cust.uID equals user.uID
                       join refCust in (
                       
                       )
                       where cust.IsActive == true && cust.IsDelete == false && user.rID == 3
                       select new RefCust
                       {
                          
                       }).ToList();

CHill60

Что не так с вашим кодом? Возникает ли исключение, не возвращает ли оно то, что вы ожидаете?

dawood abbas

Я не могу завершить свой запрос linq в соответствии с приведенным выше sql-запросом.

2 Ответов

Рейтинг:
2

Maciej Los

Примечание: у меня нет доступа к вашим данным или вашему экрану, поэтому я не могу дать прямой ответ (решение).

Наиболее рекомендуемый метод Linq для реализации SQL IN предложение Содержит[^]. Видеть:
Что такое linq, эквивалентный SQL в operator - Stack Overflow[^]
Совет 8 – Как писать запросы в стиле " WHERE IN’ с помощью LINQ to Entities – Meta-Me[^]

Я почти уверен, что вы можете достичь того же результата, используя Linq Где[^] + Все[^] метод (нужно некоторое время, чтобы привести пример).


dawood abbas

Я получил их запрос, но выдал ошибку null exception...а в контроллер MVC это идет, в даль не могу...

var res = от пользователей в CRMEntites.Пользователи
присоединяйтесь к касту в CRMEntites.Клиенты на пользователях.жидкости равна абон.жидкости
присоединяйтесь к refCust in (
из refC в CRMEntites.Рефкустомеры
группа refC by refC.MobileNo в grp
выберите grp.OrderByDescending(g => g.cuRefID).FirstOrDefault()
) на пользователей.MobileNo равно refCust.MobileNo
где пользователи.IsDelete != правда и усилитель; & пользователям.мпог == 3 &&усилителя; абон.Статус == "INV" && cust.Статус == "ВИС"
выберите new DashboardGrid
{
Наименование = пользователи.Название,
CreatedOn = refCust.CreatedOn,
MobileNo = refCust.MobileNo,
Расширение = refCust.Расширение
};

dawood abbas

ниже просто группировка, которая находится в Ctroller.cs работает и получает данные..отлично
ВАР Рес = _objRefCustomerBS.GetAllRefCustomer().GroupBy(x => x.MobileNo).Выберите(х => У Х.Вызова метода toList().OrderByDescending(г =&ГТ; г.cuRefID).Во-первых()).Список();
но этот приведенный ниже код не работает в файле класса DAL.
var res = CRMEntites.Рефкустьеры.GroupBy(x => x.MobileNo).Выберите(х => У Х.Вызова метода toList().OrderByDescending(г =&ГТ; г.cuRefID).Во-первых()).Список();

Рейтинг:
0

shawn patil

var q =  from d in Dealer
         join dc in DealerConact on d.DealerID equals dc.DealerID
         select dc;


Maciej Los

Это не ответ на вопрос!

dawood abbas

@shawn patil я могу присоединиться, но не могу получить данные путем группировки.