LINQ to SQL は結果として匿名型を返すことができますか?
LINQ to SQL で、複数のテーブルをクエリし、その結果を匿名型と組み合わせるにはどうすればよいですか?
匿名型を使用した最初の試行
次の例では、2 つのテーブル Dogs
と Breeds
を使用し、匿名型を使用してすべての犬とそれに対応する BreedName
を取得しようとします。
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; }</dog>
が返されることを期待しているため、これは失敗します。 Dogs
カスタムタイプ
1 つの解決策は、犬種名を持つ犬を表すカスタム タイプを作成することです:
public class DogWithBreed { public Dog Dog { get; set; } public string BreedName { get; set; } }
カスタムタイプを使用する
このカスタム タイプを使用すると、クエリを変更して目的の結果を返すことができます:
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; }</dogwithbreed>
以上がLINQからSQLクエリは、結果として匿名タイプを返すことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。