Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq';让我们来看看结果吧?_Linq_Linq To Sql - Fatal编程技术网

Linq';让我们来看看结果吧?

Linq';让我们来看看结果吧?,linq,linq-to-sql,Linq,Linq To Sql,它是在查询时,还是在整个列表已在集合中时,使用指定的编号并停止 使用“take”时有什么性能优势(如果有的话)?所有查询都发生在枚举时 就性能而言,Take应该能够确定获取多个项目的最有效方式 这意味着在LINQtoSQL中转换为“TopN”语句 我的结果来自(q.Take(10)).ToString(): 以及(q.Skip(10).Take(10)).ToString()的结果: 所有查询都发生在枚举时 就性能而言,Take应该能够确定获取多个项目的最有效方式 这意味着在LINQtoSQ

它是在查询时,还是在整个列表已在集合中时,使用指定的编号并停止


使用“take”时有什么性能优势(如果有的话)?

所有查询都发生在枚举时

就性能而言,Take应该能够确定获取多个项目的最有效方式

这意味着在LINQtoSQL中转换为“TopN”语句

我的结果来自
(q.Take(10)).ToString()

以及
(q.Skip(10).Take(10)).ToString()的结果:


所有查询都发生在枚举时

就性能而言,Take应该能够确定获取多个项目的最有效方式

这意味着在LINQtoSQL中转换为“TopN”语句

我的结果来自
(q.Take(10)).ToString()

以及
(q.Skip(10).Take(10)).ToString()的结果:


您将只获取从数据库返回的指定记录数,筛选在SQL中完成。

您将只获取从数据库返回的指定记录数,过滤是在SQL中完成的。

其他答案是关于LINQ to SQL的,它也在标记中,但值得一提的是,LINQ to对象将按照您的建议执行。有效地做这样的事情:

int i = 0;
foreach (var item in items) {
    if ( i++ < count ) {
        yield return item;
    }
}

其他答案是关于LINQtoSQL的,它也在标记中,但值得一提的是,LINQtoObjects将按照您的建议执行。有效地做这样的事情:

int i = 0;
foreach (var item in items) {
    if ( i++ < count ) {
        yield return item;
    }
}

如果我先做“Orderby”怎么办?没什么区别。表达式树将转换为同一个SQL。如果我先执行“Orderby”,会怎么样?没有区别。表达式树将转换为同一个SQL。如果我先执行“Orderby”,该怎么办?所有这些操作都会推迟到SQL Server,因此它可以使用索引等,以尽可能提供最佳性能。如果我先执行“Orderby”,该怎么办?所有这些操作都会推迟到SQL Server,因此它可以使用索引,等等,以尽可能提供最佳性能。
int i = 0;
foreach (var item in items) {
    if ( i++ < count ) {
        yield return item;
    }
}
var c = items.Take(10);  // not yet enumerated
c.Count();  // enumerated the first 10
c.Count();  // enumerated the first 10 again