linq to sql:複雑なクエリと匿名タイプの処理
linq to sqlはデータベースインタラクションの強力なツールですが、複雑な結果セット、特に匿名タイプを含むものを扱う場合、制限が存在します。 これは、複数のテーブルを照会すると明らかになります
「犬」(列の名前」、「年齢」、「breadid」)、「breed」(「breadid」、 "breedname")の2つのテーブルを検討します。 目標は、犬の情報とその品種名を取得することです。 結合と匿名のタイプの投影を使用した素朴なアプローチは次のようになるかもしれません:
<code class="language-csharp">var result = from d in db.Dogs join b in db.Breeds on d.BreedId equals b.BreedId select new { Name = d.Name, BreedName = b.BreedName };</code>これは失敗します。LinqtoSQLにはマッピング可能なタイプが必要であり、匿名の型が必要ではありません。 ソリューション:カスタムクラス
推奨されるソリューションは、結合されたデータを表すためにカスタムクラスを定義することです。
このクラスのインスタンスに入力するようにクエリが変更されます。
<code class="language-csharp">public class DogWithBreed { public Dog Dog { get; set; } public string BreedName { get; set; } }</code>このアプローチは、タイプの安全性と拡張性を提供し、複数のテーブルから取得された複雑なデータの効率的な取り扱いを可能にし、LINQの匿名タイプによって課される制限を排除します。
以上がLINQを使用してSQLを使用して複数のテーブルを照会するときに匿名タイプの制限を克服する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。