public void Where_ICollection_ReturnsExpectedValues_Complex()
{
ICollection<int> source = new LinkedList<int>(new List<int> { 2, 1, 3, 5, 4 });
Func<int, int, bool> complexPredicate = (value, index) => { return (value == index); };
IEnumerable<int> result = source.Where(complexPredicate);
Assert.Equal(2, result.Count());
Assert.Equal(1, result.ElementAt(0));
Assert.Equal(4, result.ElementAt(1));
}