31 在LINQ查询中避免不必要的迭代
class MyList : IEnumerable<Person> { List<Person> list = new List<Person>() { new Person() { Name = "Mike", Age = 25 }, new Person() { Name = "Mike", Age = 30 }, new Person() { Name = "Rose", Age = 25 }, new Person() { Name = "Steve", Age = 30 }, new Person() { Name = "Jessica", Age = 20 } }; public int IteratedNum { get; set; } public Person this[int i] { get { return list[i]; } set { this.list[i] = value; } } public IEnumerator<Person> GetEnumerator() { foreach (var item in list) { IteratedNum++; yield return item; } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } class Person { public string Name { get; set; } public int Age { get; set; } } class Program { static void Main(string[] args) { MyList list = new MyList(); var temp = (from c in list where c.Age == 20 select c).ToList(); Console.WriteLine(list.IteratedNum.ToString()); list.IteratedNum = 0; var temp2 = (from c in list where c.Age >= 30 select c).First(); Console.WriteLine(list.IteratedNum.ToString()); Console.ReadLine(); } }
Stay hungry, stay foolish

浙公网安备 33010602011771号