使用下面的简单示例,使用Linq to 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
并在选择中指定该类型?还是有另一种更简单的方法?
出于好奇,为什么所有Linq示例都显示使用匿名类型,如果它们不起作用。例如,[这个例子](http://msdn.microsoft.com/en-us/library/bb399375%28v=vs.110%29.aspx)做了`foreach(查询中的var cust)Console.WriteLine(“id = {0},City = {1}“,cust.CustomerID,cust.City);` – 2014-04-08 18:30:09
@Hot Licks - 这些示例中的Customer表是一个由类表示的实体。这个例子似乎并没有显示这些类的定义。 – 2014-04-08 19:37:26
它也没有告诉你,编译器swizzle正在用类名替换“var”。 – 2014-04-08 19:43:54