当我正在编写我的DAL或其他返回一组项目的代码时,我是否应该总是返回语句:
public IEnumerable<FooBar> GetRecentItems()
Run Code Online (Sandbox Code Playgroud)
要么
public IList<FooBar> GetRecentItems()
Run Code Online (Sandbox Code Playgroud)
目前,在我的代码中,我一直试图尽可能地使用IEnumerable,但我不确定这是否是最佳实践?这似乎是正确的,因为我返回了最通用的数据类型,同时仍然描述它的作用,但也许这是不正确的.
我在.NET上有点新手,我想知道linq是如何工作的,因为你可以一个接一个地使用许多linq查询,但是在用于传输信息或转换为列表之前,它们都没有真正执行,等
有2种重要的方法来获得一个LINQ查询,通过使用IQueryable<T>其获得的所有记录,然后将其与他们对记忆工作,这直接aplies在SQL中,其中过滤器,和IEnumerable.但是,让我们来看看这段代码:
//Linq dynamic library
IQueryable<Table> myResult = db.Categories
.Where(a => a.Name.Contains(StringName))
.OrderBy("Name")
.Skip(0)
.Take(10);
if (myResult != null)
{
return myResult.AsEnumerable();
}
else
{ return null; }
Run Code Online (Sandbox Code Playgroud)
我正在使用Linq动态库,这个查询的直接结果是IQueryable<T>,如果查询最终被返回IEnumerable,是否真的在sql上过滤了查询?还是在记忆中?