以下の簡単な例を使用して、Linq to SQLを使用して複数のテーブルから結果を返す最良の方法は何ですか?
2つのテーブルがあるとします。
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
私はすべての犬を連れて帰りたいですBreedName
。私はすべての犬にこのようなものを問題なく使用してもらう必要があります:
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;
}
しかし、品種のある犬が必要でこれを試してみると、問題が発生します。
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;
}
コンパイラーはDogsを想定しているため、匿名型のセットを返すことができないことに気づきましたが、カスタム型を作成せずにこれを返す方法はありますか?または、私は独自のクラスを作成し、DogsWithBreedNames
そのタイプを選択で指定する必要がありますか?または別の簡単な方法はありますか?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);