什么是Select LINQ的最佳返回类型

时间:2011-09-22 12:59:15

标签: c# linq entity-framework

我刚刚开始使用LINQ和C#,我不确定返回一堆记录的LINQ语句的推荐返回类型是什么。

我发现以下两种符号在将数据链接到gridview时都有效。我应该在什么情况下使用哪种方法?

public object SelectAll()
    {
        var query = from p in dc.Products
                    select new { p.pk_product_id, p.product_name, p.product_price_kg };
        return query;
    }

public IQueryable<Product> SelectAll2()
{
    var query = from p in dc.Products
                select p;
    return query;
}

3 个答案:

答案 0 :(得分:5)

您不想返回object。我想知道你在哪里见过这个。
IQueryable<T>IEnumerable<T>是首选方式。

答案 1 :(得分:0)

如果此方法仅作为SelectMethod的{​​{1}}调用,则无关紧要GridView代码将在执行时确切地检查它所提供的数据类型,并根据它确定如何处理它。强类型方法GridView没有任何影响。

如果您要从自己的代码中使用此方法,请使用最有效的特定类型。

答案 2 :(得分:0)

如果要构建可重用的数据访问代码(而不仅仅是对特定表单或控件的查询),那么您应该查看存储库模式 - 看看here

在这种情况下,您可能希望从查询中返回强类型实体(而不是匿名类结果中的对象)

PS:你可以将SelectAll2缩短为

return dc.Products.AsQueryable();