使用下面的简单示例,使用Linq将多个表中的结果返回到SQL的最佳方法是什么?
说我有两个表:
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);