LinqとLambdaが参加する習得:実用的なガイド
LinqおよびLambdaの表現を使用して作業する開発者にとって一般的な課題は、2つのテーブルを効率的に結合することです。 これは多くの場合、エラーにつながります。問題のある例を調べて、効果的な解決策を探求しましょう次のLINQクエリは、結合を試みている間にエラーを含みます:
この問題は、
<code class="language-csharp">int id = 1; var query = database.Posts.Join( database.Post_Metas, post => database.Posts.Where(x => x.ID == id), meta => database.Post_Metas.Where(x => x.Post_ID == id), (post, meta) => new { Post = post, Meta = meta } );</code>
およびpost
セレクターにあります。 これらのセレクターは、追加のクエリを実行するのではなく、プライマリキーと外部キーを直接参照する必要があります。
meta
Join
ソリューション1:LINQクエリ構文(より読みやすい)明確さを改善するために、Linq Query構文はより直感的なアプローチを提供します:
このアプローチは、結合条件(
)とフィルタリング()を明確に示しています。
<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>
post.ID equals meta.Post_ID
where post.ID == id
ラムダ式の簡潔さを好む場合は、拡張方法を使用した修正バージョンを次に示します。
およびプロパティを直接使用しているため、効率的でエラーがありません。 句は、目的の
に基づいて結果をろ過します。 このアプローチは、接合の後のフィルタリングを実行し、不要なデータベース操作を削減するため、より効率的です。
これらの改善された方法を理解することにより、クエリ構文とラムダ式の両方を使用してテーブルを結合するためのクリーナー、より効率的、エラーのないLINQクエリを書き込むことができます。以上がLinqとLambdaの式を使用して2つのテーブルを効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。