是否可以使用Linq和lambdas而不包含System.Linq命名空间?

Kam*_*l T 7 c# linq lambda

前段时间,我一直在研究一个非常扭曲的项目 - 我只能在单个范围内编写代码,然后将其放入C#函数(由另一个模块).

我只能使用之前声明的名称空间(我对它们没有任何影响)并且只能使用我工作的作用域中的变量.因此,我无法更改标题和包含的库.

当我想操作泛型集合时出现问题 - 我既不能使用lambda表达式,也不能使用LINQ - 我根本无法放置using System.Linq;,因为我无法访问文件头.

我只需做一件简单的事情,没有LINQ或lambda就很容易管理.但是,之后我想知道会发生什么,如果我不得不在IEnumerable上使用一些更复杂的操作.从那以后,我的问题出现了:

是否可以在不更改文件头和添加新命名空间的情况下使用LINQ或lambdas?

让我们说我们有一个List<int> _Numbers = new List<int>();.让它充满一些数字.现在我想从中选择所有偶数.

using System.Linq;在报头中,该溶液是显而易见的:

List<int> _NewList = _Numbers.Where(n => n % 2 == 0).ToList();
Run Code Online (Sandbox Code Playgroud)

要么

List<int> _NewList = (from _Number in _Numbers where _Number % 2 == 0 select _Number).ToList();
Run Code Online (Sandbox Code Playgroud)

但是如果不包含LINQ,我该如何实现呢?我的第一个猜测是这样的:

List<int> _NewList = System.Linq. // ??? What to add here?
Run Code Online (Sandbox Code Playgroud)

我知道这个问题很奇特,走这条路是很不寻常的,但我只是很好奇,而且我没有找到关于这个案例的信息.

Mar*_*ell 16

如果没有using指令,等的方法.Where,.Select将无法解决.这意味着LINQ 语言部分将无法正常工作.你必须长时间(和向后!)编码它:

List<int> _NewList = System.Linq.Enumerable.ToList(
    System.Linq.Enumerable.Where(_Numbers, _Number => _Number % 2 == 0)
);
Run Code Online (Sandbox Code Playgroud)

请注意,对于包含组,订单,"let",联接等的较长示例,这变得越来越复杂.除非您做的事情相当简单,否则建议您找到添加using指令的方法.

但请注意,如果_Numbers是a List<T>,则可以使用(对于此单个示例):

List<int> _NewList = _Numbers.FindAll(_Number => _Number % 2 == 0);
Run Code Online (Sandbox Code Playgroud)