Я пытаюсь освежить мой 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, чтобы выполнить удаление символов.