Невозможно преобразовать запрос SQL в запрос linq, который содержит подзапрос и должен обрабатывать две таблицы - PullRequest
0 голосов
/ 29 мая 2018

Мы преобразуем SQL-запрос в запрос linq, это преобразование включает две таблицы следующим образом:

select * 
from Tbl_Vulpith_Registration 
where Profile_Pic is not null 
  and MemId IN (select MemId from Tbl_List_Services)

Tbl_Vulpith_Registration и Tbl_List_Services - две задействованные таблицы.

memId является общим столбцом в обеих таблицах.

Это то, что мы пытались преобразовать вышеупомянутым SQL-запросом в linq:

  var reglist = objentity.Tbl_Vulpith_Registration.Select(a => a).Where(a => a.Profile_Pic != null);
    var listmemsmemIds = objentity.Tbl_List_Services.Select(b => b.MemId).ToList();

    var finalist = reglist.Select(b => b).Where(c => c.MemId.Contains(listmemsmemIds));

Ответы [ 2 ]

0 голосов
/ 30 мая 2018
(from r in Tbl_Vulpith_Registration.Where(r => r.Profile_Pic != null)
from s in Tbl_List_Services.Where(s => s.MemId == r.MemId)
select r).ToList();

Я полагаю, что вы также можете использовать этот подход, когда вы объединяете эти таблицы в общем столбце MemId.

0 голосов
/ 29 мая 2018

Полагаю, MemId - это числовой тип, если да, то вы используете Contains неправильно, исправьте свое последнее утверждение следующим образом:

var finalist = reglist.Select(b => b).Where(c => listmemsmemIds.Contains(c.MemId));

Или даже лучше,используйте синтаксис запроса, он получит ваш результат в одном выражении:

var finalist = (from a in objentity.Tbl_Vulpith_Registration
                 where a.Profile_Pic != null && (from b in objentity.Tbl_List_Services select b.MemId).Contains(a.MemId)
                 select a).ToList();
...