LINQ to SQL能否返回匿名类型作为结果?
在LINQ to SQL中,如何查询多个表并将结果与匿名类型结合?
使用匿名类型的初始尝试
以下示例使用两个表Dogs
和Breeds
,尝试使用匿名类型检索所有狗及其对应的BreedName
:
<code class="language-csharp">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; }</dog></code>
但是,这会失败,因为编译器期望返回Dogs
,而不是匿名类型。
自定义类型
一种解决方案是创建一个自定义类型来表示带有品种名称的狗:
<code class="language-csharp">public class DogWithBreed { public Dog Dog { get; set; } public string BreedName { get; set; } }</code>
使用自定义类型
使用此自定义类型,可以修改查询以返回所需结果:
<code class="language-csharp">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; }</dogwithbreed></code>
这种方法提供了一种类型安全且可重用的方法,可以使用自定义类型组合来自多个表的结果。 这避免了使用匿名类型时遇到的类型不匹配问题。
以上是Linq到SQL查询可以返回匿名类型作为结果吗?的详细内容。更多信息请关注PHP中文网其他相关文章!