如何返回包含LINQ to SQLquery结果的列表?我尝试了这个实现,但是我遇到了这个错误。
无法隐式转换类型
'System.Collections.Generic.List<AnonymousType#1>'
来'System.Collections.Generic.List<object>
任何帮助都将不胜感激。
public List<Object> getShoes()
{
var query = from b in db.BrandTbls.AsQueryable()
join m in db.ShoeModelTbls on b.BrandID equals m.BrandID
join s in db.ShoeTbls on m.ModelID equals s.ModelID
join i in db.ShoeImageTbls on s.ShoeID equals i.ShoeID
select new { s.ShoeID, s.Size, s.PrimaryColor, s.SecondaryColor, s.Quantity, m.ModelName, m.Price, b.BrandName, i.ImagePath };
return query.ToList();
}
答案 0 :(得分:13)
匿名类型专门设计为完全在定义它们的范围内使用。如果要从此方法返回查询结果,则应创建一个新的命名类型来表示查询结果,并选择该命名类型的实例,而不是匿名类型的实例。
答案 1 :(得分:3)
您无法返回其中T为匿名类型的List;你需要返回一个已知的类型。您可以创建一个类
public class MyResult
{
public string ShoeID {get; set;}
public string Size {get; set;}
public string PrimaryColor {get; set;}
public string SecondaryColor {get; set;}
public string Quantity {get; set;}
public string ModelName {get; set;}
public string Price {get; set;}
public string BrandName {get; set;}
public string ImagePath {get; set;}
}
然后改变您的选择
select new MyResult { ShoeID = s.ShoeID, Size = s.Size, PrimaryColor = s.PrimaryColor ........ };
并且您的方法签名将更改为
public List<MyResult> getShoes()