忘记是在哪看到的了,很久以前收藏的,现在转存在这里
定义一个Employee类:
public class Employee
{
public string FirstName {set; get;}
public string LastName {set; get;}
public decimal Salary {set; get;}
public bool IsManager {set; get;}
}
再定义一个Employee的列表:
List<Employee> employees = new List<Employee>( );
1. FindAll()操作
原始的方法:
foreach (Employee employee in employees)
{
if (employee.IsManager == true)
managers.Add(employee);
}
Lambda表达式:
List<Employee> managers = employees.FindAll(employee => employee.IsManager == true);
2. Where()操作
where()和FindAll()类似,有时候用where能使代码更好理解:foreach (Employee employee in employees.Where(e => e.IsManager == true))
{ // do something }
3. Find()操作
Find()返回列表的第一个对象: Employee firstManager = employees.Find(employee => employee.IsManager == true);
if (firstManager == null)
Console.WriteLine("No managers found in list.");
4. ForEach( )操作
employees.ForEach(e => e.Salary += 100);
5. OrderBy( ) and OrderByDescending( )操作
OrderBy()返回一个升序排列的List;OrderByDescending()返回一个降序排列的List:
List<Employee> sortedList = employees.OrderBy(e => e.Age).ToList();
List<Employee> sortedList = employees.OrderByDescending(e => e.Age).ToList();
6. Sort( )
employees.Sort((e1, e2) => e1.DOB.CompareTo(e2.DOB));
public enum SortOrder { Ascending, Decending };
public static void Sort<TKey>(ref List<Employee> list, Func<Employee, TKey> sortKey, SortOrder sortOrder)
{
if (sortOrder == SortOrder.Ascending)
list = list.OrderBy(sortKey).ToList();
else
list = list.OrderByDescending(sortKey).ToList();
}
现在可以这样使用:
Employee.Sort(employees, e => e.Salary, SortOrder.Ascending);