Сохранить ввод с помощью выражения LINQ, используя вместо, кроме «Где» - PullRequest
0 голосов
/ 05 октября 2009

Учитывая это выражение LINQ:

items.Select( i => i.ToLowerInvariant() ).Except( keywords )

Есть ли способ выразить это, где вы сохраняете регистр ввода, без использования Where ()?

Где подход:

items.Where( i => !keywords.Contains( i.ToLowerInvariant() ) )

Мне нравится, как читается подход Except, но мне не нужен измененный вывод.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 05 октября 2009

Существует перегрузка для Except (), которая принимает IEqualityComparer - вы можете использовать один из встроенных компараторов строк:

items.Except( keywords, StringComparer.InvariantCultureIgnoreCase );
2 голосов
/ 05 октября 2009

Вы можете использовать перегрузку Except, которая принимает IEqualityComparer<T>. В этом случае вам не нужно накатывать свой собственный компаратор: встроенный класс StringComparer.InvariantCultureIgnoreCase делает именно то, что вам нужно:

items.Except(keywords, StringComparer.InvariantCultureIgnoreCase);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...