Jakiś czas temu pracowałem nad dość poskręcanym projektem - mogłem napisać kod tylko w jednym zakresie, a później został on umieszczony w funkcji C# (przez inny moduł).Czy można używać Linq i lambdas bez uwzględniania przestrzeni nazw System.Linq?
Mogłem używać tylko przestrzeni nazw, które zostały zadeklarowane wcześniej (nie miałem na nie wpływu) i mogłem używać tylko zmiennych z zakresu, w którym pracowałem. Z tego powodu nie byłem w stanie zmienić nagłówków i dołączonych bibliotek .
Problem pojawił się, gdy chciał działać na zbiorach generycznych - Nie mogłem używać ani wyrażeń lambda, ani LINQ - Ja po prostu nie mógł umieścić using System.Linq;
, ponieważ nie miałem dostępu do nagłówka pliku.
Musiałem zrobić tylko prostą rzecz i łatwo było zarządzać bez LINQ lub lambda. Jednak później zastanawiałem się, co by się stało, gdybym musiał użyć niektórych bardziej złożonych operacji na IEnumerable. Z tego pochodzi moje pytanie:
Czy można używać LINQ lub lambdas bez zmiany nagłówka pliku i dodawania nowych przestrzeni nazw?
Załóżmy, że mamy List<int> _Numbers = new List<int>();
. Niech wypełni się pewnymi liczbami. Teraz chcę wybrać wszystkie liczby parzyste z tego.
Z using System.Linq;
w nagłówku, rozwiązanie jest oczywiste:
List<int> _NewList = _Numbers.Where(n => n % 2 == 0).ToList();
lub
List<int> _NewList = (from _Number in _Numbers where _Number % 2 == 0 select _Number).ToList();
Ale bez LINQ włączone, w jaki sposób można to osiągnąć? Moje pierwsze przypuszczenie byłoby coś takiego:
List<int> _NewList = System.Linq. // ??? What to add here?
Zdaję sobie sprawę, że problem jest dość egzotyczne, i to bardzo niezwykłe, aby przejść w ten sposób, ale jestem po prostu ciekawy i znalazłem żadnych informacji na ten temat walizka.
'System.Linq.Enumerable.Where (_NewList, n => n% 2 == 0)' –
@nsinreal - dzięki, właśnie tego szukałem. Dodaj to jako odpowiedź, a oznaczysz ją jako poprawną;) –
Możesz także dołączyć instrukcje "using" w deklaracji przestrzeni nazw klasy. Czy to wciąż jest poza zakresem, do którego masz dostęp? – Sam