USE lambda expression

    技术2022-05-20  55

     

            static void Main(string[] args)         {             #region "Building a List of Customers"             List<Customer> custList = new List<Customer>()                     {new Customer()                            { CustomerId = 1,                              FirstName="Bilbo",                              LastName = "Baggins",                               SalesTotal=10.0M,                             EmailAddress = "bb@hob.me"                             },                      new Customer()                            { CustomerId = 2,                              FirstName="Frodo",                              LastName = "Baggins",                                 SalesTotal=10.0M,                             EmailAddress = "fb@hob.me"},                      new Customer()                            { CustomerId = 3,                              FirstName="Samwise",                              LastName = "Gamgee",                                 SalesTotal=10.0M,                             EmailAddress = "sg@hob.me"},                      new Customer()                            { CustomerId = 4,                              FirstName="Rosie",                              LastName = "Cotton",                                 SalesTotal=10.0M,                             EmailAddress = "rc@hob.me"}};             #endregion             #region "Lambda Expressions: Finding an Item in a Generic List"             //way1:loop list and compare             Customer foundCustomer = null;             foreach (var c in custList)             {                 if (c.CustomerId == 4)                 {                     foundCustomer = c;                     break;                 }             }             Console.WriteLine(foundCustomer);             //way2 :LINQ             foundCustomer = null;             var query = from c in custList                         where c.CustomerId == 4                         select c;             foundCustomer = query.FirstOrDefault();             Console.WriteLine(foundCustomer);             //way3: anoymous method             foundCustomer = custList.Find(delegate(Customer c)             {                 return c.CustomerId == 4;             });             //way4:lambda expression             foundCustomer = custList.FirstOrDefault<Customer>(c => c.CustomerId == 4);             foundCustomer = custList.FirstOrDefault<Customer>(c =>             {                 return c.CustomerId == 4;             });             foundCustomer = custList.FirstOrDefault<Customer>((Customer c) => c.CustomerId == 4);             foundCustomer = custList.FirstOrDefault<Customer>((Customer c) =>             {                 return c.CustomerId == 4;             });             foundCustomer = custList.Find(c => c.CustomerId == 4);             //Lambda Expressions: Predicate Delegates             //[ a predicate is “a function which returns a Boolean value”.]             var target = Array.Find<Customer>(custList.ToArray(), c => c.LastName.StartsWith("K"));             //Lambda Expressions: Action Delegates             //an action delegate encapsulates a method that performs an action and has no return value. It takes up to four parameters (and this number is increased in .NET 4.0             custList.ForEach(c => Console.WriteLine(c));             //Lambda Expressions: Func Delegates             //A Func delegate encapsulates a method that returns a value.              //It takes up to four parameters (and this number is increased in .NET 4.0) plus the return value.             var total = custList.Sum(c => c.SalesTotal);             //Lambdas: Aggregating Strings             /*The Select method first selects the email address for each customer.               * The Aggregate method then appends the email addresses together.              * And this code correctly handles the '”;” so you don’t have to think about it*/             IEnumerable<string> email = custList.Select(c => c.EmailAddress);             string m = email.Aggregate((items,item)=>items+";" +item);             string m2=custList.Select(c => c.EmailAddress)  .Aggregate((items, item) => items + "; " + item);             //Lambda Expressions: Finding Differences in Two Lists             /*              * To compare items in two lists and find which items in one list are not in the other.              * For example: {1, 2, 3}, {2, 3, 4}. {1} is only in the first list.              * To display the contents of the resulting set.              */             List<int> list1 = new List<int>() { 1, 6, 8 };             List<int> list2 = new List<int>() { 2, 6 };             /*              This is a Func delegate which returns an IEnumerable<int>.               * There are no arguments passed into the function, hence the empty parenthesis ().              * The => is the lambda operator. The remaining code uses the Except method of the list to find the items               * not in the second list.              */             Func<IEnumerable<int>> exceptionFunction = () => list1.Except(list2);             //The following lambda expression displays the resulting items             /*              * This one is an Action delegate that takes no parameters.               * It first takes the IEnumerable result from the exceptionFunction,              * converts it to a list, then writes each item to the Debug window              */             Action displayList = () => exceptionFunction().ToList().ForEach(i => Console.WriteLine(i));             displayList(); // Result 1,8             Console.ReadLine();             #endregion         }

    最新回复(0)