Если вы можете перейти к использованию List <>, а не LinkedList <>, тогда вы можете использовать операцию RemoveAll (). Передайте анонимного делегата вот так;
List<string> list = new List<string>()
{
"Fred","Joe","John"
};
list.RemoveAll((string val) =>
{
return (0 == val.CompareTo("Fred"));
});
Все это использует расширения Linq.
Если вы не можете перейти к использованию списка, вы можете использовать метод ToList <> () для его преобразования. Но тогда вам придется выполнить некоторые операции очистки и вставки. Как это;
LinkedList<string> str = new LinkedList<string>();
str.AddLast("Fred");
str.AddLast("Joe");
str.AddLast("John");
List<string> ls = str.ToList();
ls.RemoveAll((string val) => val.CompareTo("Fred") == 0);
str.Clear();
ls.ForEach((string val) => str.AddLast(val));
Если все это по-прежнему неприемлемо, попробуйте создать копию LinkedList следующим образом:
LinkedList<string> str = new LinkedList<string>();
str.AddLast("Fred");
str.AddLast("Joe");
str.AddLast("John");
LinkedList<string> strCopy = new LinkedList<string>(str);
str.Clear();
foreach (var val in strCopy)
{
if (0 != val.CompareTo("Fred"))
{
str.AddLast(val);
}
}
Надеюсь, это поможет.