如何从C#中的方法返回一个列表

时间:2014-05-22 20:32:51

标签: c# linq list

如何返回包含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();
}

2 个答案:

答案 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()