linqエンティティが参加するマスタリング:lambda式、Join
、およびWhere
やJoin
などの強力なツールを提供します。ただし、特にラムダの表現でこれらを正しく適用するのは難しい場合があります。
Where
一般的な落とし穴には、
句を誤用することが含まれます。 この例を考えてみてくださいWhere
およびJoin
テーブル:Posts
Post_Metas
<code class="language-csharp">int id = 1; var query = database.Posts.Join( database.Post_Metas, post => database.Posts.Where(x => x.ID == id), // Incorrect! meta => database.Post_Metas.Where(x => x.Post_ID == id), // Incorrect! (post, meta) => new { Post = post, Meta = meta } );</code>
およびWhere
)全体にdatabase.Posts
を適用することにあります。 これは非効率的で正しくありません。 database.Post_Metas
句は、Join
の後にWhere
をフィルタリングする必要があります
演算子には、3つの重要なコンポーネントが必要です。
Join
左側のソーステーブル。
メソッド1:LINQクエリ構文(SQL-like)
このアプローチは、SQLの構文を反映しており、より良い読みやすさを提供します:
メソッド2:linq拡張メソッド(Fluent構文)
<code class="language-csharp">var id = 1; var query = from post in database.Posts join meta in database.Post_Metas on post.ID equals meta.Post_ID where post.ID == id select new { Post = post, Meta = meta };</code>
これは、linq拡張法の流fluent構文を使用します:
および
条項を慎重に構成することにより、<code class="language-csharp">var id = 1; var query = database.Posts .Join(database.Post_Metas, post => post.ID, meta => meta.Post_ID, (post, meta) => new { Post = post, Meta = meta }) .Where(postAndMeta => postAndMeta.Post.ID == id);</code>
以上がLambda式を使用してLINQのエンティティに正しく参加し、「Join」/`Where` clausesを使用してどのように参加しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。