当前位置: 首页 > 编程语言 > C#

是否可以在不包含System.Linq命名空间的情况下使用Linq和lambda?Share

时间:2023-04-10 23:35:26 C#

是否可以在不包含System.Linq命名空间的情况下使用Linq和lambda?前段时间,我一直在做一个相当扭曲的项目——我只能在一个范围内编写代码,然后将其放入C#函数中(通过另一个模块)。我只能使用以前声明的名称空间(我对它们没有影响),并且只能使用我工作范围内的变量。因此,我无法更改标头和包含的库。当我想操作泛型集合时,问题就出现了——我既不能使用lambda表达式,也不能使用LINQ——我不能使用System.Linq;根本因为我无权访问文件头。我只需要做一件简单的事情,无需LINQ或lambda即可轻松管理。然而,后来我想知道如果我必须对IEnumerable使用一些更复杂的操作会发生什么。从那以后,我的问题出现了:是否可以在不更改文件头和添加新命名空间的情况下使用LINQ或lambda?假设我们有一个列表_Numbers=newList();.用一些数字填充它。现在我想从中选择所有偶数。使用System.Linq;在标题中,解决方案很明显:List_NewList=_Numbers.Where(n=>n%2==0).ToList();或List_NewList=(from_Numberin_Numberswhere_Number%2==0select_Number).ToList();但是,如果不包含LINQ,我该如何实现呢?我的第一个猜测是:List_NewList=System.Linq。//???在这里添加什么?我知道这个问题很奇特,沿着这条路走下去很不寻常,但我只是好奇,我没有找到关于这个案例的信息。如果没有using指令,.Where、.Select等方法将无法解析。这意味着LINQ语言部分将无法正常工作。您将不得不对其进行长时间(和向后!)编码:List_NewList=System.Linq.Enumerable.ToList(System.Linq.Enumerable.Where(_Numbers,_Number=>_Number%2==0));请注意,对于包含组、订单、“让”、连接等的较长示例,它们变得越来越复杂。除非你做的事情相当简单,否则我建议你找到一种方法来添加using指令。但请注意,如果_Numbers是一个列表,您可以使用(对于这个示例):List_NewList=_Numbers.FindAll(_Number=>_Number%2==0);你可以这样写代码:System.Linq.Enumerable.Where(_NewList,n=>n%2==0)但是,要小心:如果你的类实现接口IQueryable,上面的代码就可以完成工作,但它会更慢。System.Linq.Queryable.Where(_NewList,n=>n%2==0)因为IQueryable是在SQL等其他DSL语言中生成C#的方式。在其他条件下,您的SQL服务器会尽快选择所需的元素。但是,如果您在服务器端使用IEnumerable或System.Linq.Enumerable而不进行优化,您将获得一个完整的项目列表,这些项目将全部加载到内存中并在内存中进行过滤。不太清楚为什么你不能访问文件“header”,但是如果你不能在指令文件的开头输入问题,你仍然可以使用类型的完全限定名称,如:System.Linq。Enumerable(...)为了使它起作用,您自然需要包含正确的引用。如果这不是您要求的,请澄清。以上是C#学习教程:IsitpossibletouseLinqandlambdaswithoutincludetheSystem.Linqnamespace?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: