IEnumerable或var

Dan*_*iel 0 c# linq

可能重复:
C#'var'与特定类型性能

在性能方面,在linq中使用var或IEnumerable会有什么不同吗?IEnumerable或IQueryable怎么样?我们怎么知道哪一个是IEnumerable,哪一个是IQueryable?例如:在下面的代码中

 IEnumerable<CaseTable> test = from x in dataBase.CaseTables
                               where x.case_id.Equals("12")
                               select x;
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 7

如果返回类型不相同,它会有所不同,然后这会改变组合.例如:

IEnumerable<Users> users = db.Users;
var count = users.Count();
Run Code Online (Sandbox Code Playgroud)

与:

var users = db.Users;
var count = users.Count();
Run Code Online (Sandbox Code Playgroud)

如果这实际上是数据库提供者,则第二个应该发出"从用户选择COUNT(1)"(1行,1列) - 但是,第一个将发出"select*from Users" - n列乘以m行.它将通过网络拖动数据,将其实现为对象,然后(LINQ-to-Objects)计算对象.

如果已经 IEnumerable<T>那么它将没有任何区别.

重新知道它是什么 - 悬停;)或更好:使用分析器(例如mvc-mini-profiler),以便您可以随时密切关注它正在运行的查询.