LINQ to SQL クエリで匿名型を返すメソッド
LINQ to SQL を使用して複数のテーブルを操作する場合、匿名型を返すと問題が発生する可能性があります。次の例を考えてみましょう:
元のメソッド:
<code class="language-csharp">public IQueryable<dog> GetDogs() { var db = new DogDataContext(ConnectString); var result = from d in db.Dogs join b in db.Breeds on d.BreedId equals b.BreedId select d; return result; }</code>
このメソッドはすべての犬の情報を正常に取得します。ただし、匿名タイプを使用して犬とその品種名を取得しようとすると、次のようになります。
<code class="language-csharp">public IQueryable<dog> GetDogsWithBreedNames() { var db = new DogDataContext(ConnectString); 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 }; return result; }</code>
代替: カスタム クラス
解決策の 1 つは、DogWithBreed のようなカスタム クラスを作成することです。
<code class="language-csharp">public class DogWithBreed { public Dog Dog { get; set; } public string BreedName { get; set; } }</code>
<code class="language-csharp">public IQueryable<DogWithBreed> GetDogsWithBreedNames() { var db = new DogDataContext(ConnectString); var result = from d in db.Dogs join b in db.Breeds on d.BreedId equals b.BreedId select new DogWithBreed() { Dog = d, BreedName = b.BreedName }; return result; }</code>
以上がLINQ から SQL クエリに匿名型を返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。