FindAll, ConvertAll are your friends
Let’s take a look at following code:
public List<string> GetDeleteWarnings_ForEach() { List<string> messages = new List<string>(); foreach (ItemReference reference in _itemReferences) { if (!reference.CanBeDeleted) { messages.Add(reference.DeleteMessage); } } return messages; }
Using FindAll and ConvertAll you can do it in one, very obvious, line:
public List<string> GetDeleteWarnings_Fluently() { return _itemReferences .FindAll(x => !x.CanBeDeleted) .ConvertAll(x => x.DeleteMessage); }