2012-03-14 3 views
0

Мне нужно преобразовать этот SQL запрос LINQ к SQL и результат возвращает IEnumerable:конвертер SQL запрос к Linq

select VisualAidName, v.VisualAidID, vs.VisualAidStatusName, 
    br.BrandName, v.IsEnabled, v.VisualAidCode, v.DateApproved, 
    br.BrandID, type, UserFirstName+ ' ' + UserLastName as name, AreaID 
from VisualAids v inner join VisualAidStatus vs 
     on v.VisualAidStatusId = vs.VisualAidStatusId 
    inner join brands br 
     on v.BrandID = br.BrandId 
    inner join VisualAids_Areas_Link vareas 
     on v.VisualAidID = vareas.VisualAidID 
    left join users us 
     on v.Owner = us.UserID 
where 
AreaID IN (
    select areaid 
    from Users inner join Users_Area_Link 
     on Users.UserID = Users_Area_Link.UserID 
    where Users.UserID= 3 
) 

Я сделал это:

IEnumerable<Visual_Aid> visualAll = from v in Context.VisualAids 
    join vs in Context.VisualAidStatus on v.VisualAidStatusId equals vs.VisualAidStatusId 
    join br in Context.Brands on v.BrandID equals br.BrandId 
    join us in Context.Users on v.Owner equals us.UserID into vadis 
    from x in vadis.DefaultIfEmpty() 
    select new Visual_Aid() 
    { 
     VisualAid_Name = v.VisualAidName, 
     VisualAid_Id = v.VisualAidID, 
     VisualAid_StatusName = vs.VisualAidStatusName, 
     VisualAid_BrandsName = br.BrandName, 
     VisualAid_IsEnabled = bool.Parse(v.IsEnabled.ToString()), 
     VisualAid_Code = v.VisualAidCode, 
     VisualAid_DateApp = v.DateApproved.ToString() ?? "", 
     VisualAid_BrandId = int.Parse(v.BrandID.ToString()), 
     VisualAid_Type = v.Type, 
     VisualAid_Owner = x.UserID == null ? "" : x.UserFirstName + " " + x.UserLastName 
    }; 

, но мне нужно сделать часть подзапроса, то есть я должен включить это:

where AreaID IN (
    select areaid from Users inner join Users_Area_Link 
     on Users.UserID = Users_Area_Link.UserID where Users.UserID= 3 
) 

Кто-нибудь знает как? спасибо вам большое заранее

+0

Пожалуйста, посмотрите на изменения, которые я сделал, так что вы видите, как форматировать вопрос так, что это читаемо. –

+0

Хорошо, спасибо Томас – user1269747

ответ

0

Вы можете добавить это как где высказыванием:

....... 
join us in Context.Users on v.Owner equals us.UserID into vadis 
from x in vadis.DefaultIfEmpty() 
where (
     from user in Context.Users 
     join userArea in Users_Area_Link 
      on user.UserID equals userArea.UserID 
     where user.UserID==3 
     select userArea.areaid 
     ).Contains(????.AreaID) 
select new Visual_Aid() 
{ 
....... 
Смежные вопросы