LINQ - .Cast <T>()选择记录吗?

Hug*_*are 4 c# linq records linq-to-sql

我注意到某些命令导致LINQtoSQL连接到数据库并下载作为查询一部分的记录,例如.ToArray().

命令.Cast()是否会导致查询执行(以后如何判断这些事情?).例如...

IRevision<T> current = context.GetTable(typeof(T))
    .Cast<IRevision<T>>()
    .SingleOrDefault(o => o.ID == recordId);
Run Code Online (Sandbox Code Playgroud)

我知道.GetTable有一个命令允许你指定泛型类型,但由于奇怪和无法解释的原因,它不能在这种情况下使用.

use*_*116 7

来自Enumerable.Cast()的评论:

此方法通过使用延迟执行来实现.立即返回值是一个对象,它存储执行操作所需的所有信息.在通过直接调用其GetEnumerator方法或在Visual C#中使用foreach或在Visual Basic中使用For Each来枚举对象之前,不会执行此方法表示的查询.

所有LINQ运算符都会告诉您它们是延迟执行还是立即执行查询.另外,以下是不推迟的标准LINQ运算符:

  • 骨料
  • 所有
  • 任何
  • 平均
  • 包含
  • 计数
  • ElementAt的
  • ElementAtOrDefault
  • 第一
  • FirstOrDefault
  • 持续
  • LastOrDefault
  • LongCount
  • 马克斯
  • SequenceEqual
  • 的SingleOrDefault
  • ToArray的
  • ToDictionary
  • ToList
  • 去查查看