Я пытаюсь освежить свой LINQ, написав несколько простых методов расширения. Есть ли лучший способ написать такую функцию, как показано ниже, которая удаляет заданный список символов из строки (используя LINQ)?
Это помогает мне подумать о методах расширения, на которые опирается LINQ:
public static string Remove(this string s, IEnumerable<char> chars)
{
string removeChars = string.Concat(chars);
return new string(s.ToCharArray().Where(c => !removeChars.Contains(c)).ToArray());
}
Но это довольно уродливо. Ergo LINQ.
Различие, которое я замечаю в операторе LINQ, заключается в том, что я должен использовать 'select', тогда как при использовании метода расширения я не обязан.
/// <summary>Strip characters out of a string.</summary>
/// <param name="chars">The characters to remove.</param>
public static string Remove(this string s, IEnumerable<char> chars)
{
string removeChars = string.Concat(chars);
var stripped = from c in s.ToCharArray()
where !removeChars.Contains(c)
select c;
return new string(stripped.ToArray());
}
Так что мне интересно, является ли этот (последний фрагмент выше) кратчайшим оператором LINQ для выполнения удаления символов.