我刚刚开始使用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;
}
答案 0 :(得分:5)
您不想返回object
。我想知道你在哪里见过这个。
IQueryable<T>
或IEnumerable<T>
是首选方式。
答案 1 :(得分:0)
如果此方法仅作为SelectMethod
的{{1}}调用,则无关紧要。 GridView
代码将在执行时确切地检查它所提供的数据类型,并根据它确定如何处理它。强类型方法对GridView
没有任何影响。
如果您要从自己的代码中使用此方法,请使用最有效的特定类型。
答案 2 :(得分:0)
如果要构建可重用的数据访问代码(而不仅仅是对特定表单或控件的查询),那么您应该查看存储库模式 - 看看here。
在这种情况下,您可能希望从查询中返回强类型实体(而不是匿名类结果中的对象)
PS:你可以将SelectAll2缩短为
return dc.Products.AsQueryable();