Используя простой пример ниже, каков наилучший способ вернуть результаты из нескольких таблиц, используя 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
и указать этот тип в select? Или есть другой способ проще?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);