c# – LINQ与Method表达式的差异
发布时间:2020-12-15 17:36:41 所属栏目:百科 来源:网络整理
导读:为什么 Linq表达式IL会导致省略Select投影,而相应的方法表达式会保留Select投影? 我想这两段代码也是一样的. var a = from c in companies where c.Length 10 select c;//var b = companies.Where(c = c.Length 10).Select(c = c);//IL - LINQIEnumerablest
为什么
Linq表达式IL会导致省略Select投影,而相应的方法表达式会保留Select投影?
我想这两段代码也是一样的. var a = from c in companies where c.Length >10 select c; // var b = companies.Where(c => c.Length > 10).Select(c => c); //IL - LINQ IEnumerable<string> a = this.companies. Where<string>(CS$<>9__CachedAnonymousMethodDelegate1); //IL IEnumerable<string> b = this.companies.Where<string> (CS$<>9__CachedAnonymousMethodDelegate4).Select<string,string> (CS$<>9__CachedAnonymousMethodDelegate5); 那为什么IL的区别呢? 编辑: var a = from c in companies select c; 即使在IL内部也会导致SELECT投影.它也可以省略吗? 解决方法
在第二个示例中,对Select的调用不是多余的.如果省略Select调用,查询将只返回原始集合,而Select返回IEnumerable.
在您的第一个示例中,Where已经返回IEnumerable并且select子句没有做任何工作,因此省略它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |