2009-08-15 25 views
1

LinqToSqlには、SQLのIN句がありますか?LinqToSql "in"句

例えば、以下のクエリはLinqToSqlでどのように行われるであろう:LINQので同等とLINQのツーSQL 'で'

select * from users 
left join groups on groups.pkid 
in (select group_id from user_group 
    where user_group.userid = users.userid) 

答えて

3

SQLは[arrayOrListOrOtherEnumerable] .Contains(entity.someField)です。

あなたのサンプルクエリの同等最寄り[機能賢明]は次のようになります。

from usr in dc.Users 
join ug in dc.UserGroups on usr.UserID equals ug.UserID 
join gr in dc.Group on ug.GroupID equals gr.PkID 
select new { usr, gr } 

それが書かれている方法が効果的に左を強制ので、私はあなたのクエリからの参加左を残し、内側に参加する参加します。しかし、他の状況では左結合を行いたい場合は、.DefaultIfEmtpyで追加されたサブクエリに結合することで行います。

このような一般的な構造上の優れたリソースダミアンガードの「LINQは、カンニングペーパー」される - http://damieng.com/blog/2009/08/12/linq-to-sql-cheat-sheet

+0

で彼のブログからダウンロードすることができ、印刷可能なワンポケットベルPDFは、これは私が探していたまさにです、ありがとう! –