2011-05-15 80 views
0

傢伙嗨,我需要在這個Linq的SQL查詢複製到實體EF 4.0 LINQ到Enity查詢

select * from Subscriber a 
    inner join User b on a.UserId = b.Id 

    where b.Username = 'Name' 

可能有人可能會有幫助。

回答

0

試試這個:

var query = from s in context.Subscribers.Include("User") 
      where s.User.Username == "Name" 
      select s; 

這個假設Subscriber具有參考用戶實例導航屬性User

如果婉使用連接(這是不需要的),你可以用這個內部聯接:

var query = from s in context.Subscribers 
      join u in context.Users on s.User.Id equals u.Id 
      where u.Username == "Name" 
      select new 
       { 
        Subscriber = s, 
        User = u 
       }; 

或這個左外連接:

var query = from s in context.Subscribers 
      join u in context.Users on s.User.Id equals u.Id into x 
      where u.Username == "Name" 
      from y in x.DefaultIfEmpty() 
      select new 
       { 
        Subscriber = s 
        User = y, 
       }; 
+0

是否有另一種方式來做到那,沒有包括(只是好奇) – Joper 2011-05-15 14:14:24

+0

你想'用戶'數據加載?你的SQL查詢使用加載它們的'*'。如果您只需要'Subscriber'數據,而不需要'User'日期,則可以移除'Include'。用戶數據也可以在需要時延遲加載。 – 2011-05-15 14:34:02

+0

我的意思是這樣的** var query = from s in Subscriber join u in Users on s.UserId equals u.Id select new {...} ** – Joper 2011-05-16 11:13:18