What is the best way to trim a list?

I have a List of strings. Its being generated elsewhere but i will generate it below to help describe this simplified example

var list = new List<string>();
list.Add("Joe");
list.Add("");
list.Add("Bill");
list.Add("Bill");
list.Add("");
list.Add("Scott");
list.Add("Joe");
list.Add("");
list.Add("");

list = TrimList(list);

I would like a function that "trims" this list and by trim I want to remove all items at the end of the array that are blank strings (the final two in this case).

NOTE: I still want to keep the blank one that is the second item in the array (or any other one that is just not at the end) so I can't do a .Where(r=> String.isNullOrEmpty(r))

Jon Skeet
people
quotationmark

I would just write it without any LINQ, to be honest- after all, you're modifying a collection rather than just querying it:

void TrimList(List<string> list)
{
    int lastNonEmpty = list.FindLastIndex(x => !string.IsNullOrEmpty(x));
    int firstToRemove = lastNonEmpty + 1;
    list.RemoveRange(firstToRemove, list.Count - firstToRemove);
}

If you actually want to create a new list, then the LINQ-based solutions are okay... although potentially somewhat inefficient (as Reverse has to buffer everything).

people

See more on this question at Stackoverflow