使用下面的简单示例,使用 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
并在选择中指定该类型?或者还有其他更简单的方法吗?
我倾向于采用这种模式:
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;
}
这意味着您有一个额外的类,但它的编码快速且简单,易于扩展、可重用且类型安全。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)