zoukankan      html  css  js  c++  java
  • C# LINQ

    Sorting: 

    • OrderBy
    • ThenBy
    • OrderByDescending
    • ThenByDescending
    • Reverse
    1 public IEnumerable<Customer> SortByName(List<Customer> cumtomerList)
    2 {
    3     return customerList.OrderBy(c => c.LastName)
    4         .ThenBy(c => c.FirstName);
    5 }

    OrderBy a property that can have null value. null value will be sorted at the first.

    Creating:

    • Range
    • Random 
    • Repeat
     1 public IEnumerable<int> BuildIntegerSequence()
     2 {
     3     var integers = Enumerable.Range(0,10)         //0,1,2,3,4,5,6,7,8,9
     4                     .Select(i => 5+(10*i));        //5, 15 ...
     5 
     6     return integers;
     7 }
     8 
     9 public IEnumerable<string> BuildStringSequence()
    10 {
    11 
    12     var strings = Enumerable.Range(0,10)
    13                     .Select(i => ((char)('A'+i)).ToString());  //A,B,C,D,E,F,G,H,I
    14 
    15     Random rand = new Random();
    16     var randomStrings = Enumerable.Range(0,10)    
    17                     .Select(i => ((char)('A'+rand.Next(0,26))).ToString());
    18 
    19     return strings;                
    20 }

    Comparing/Combining:

    • Intersect
    • Except
    • Concat
    • Distinct
    • Union
     1 public IEnumerable<int> CompareSequence()
     2 {
     3     var seq1 = Enumerable.Range(0,10);
     4     var seq2 = Enumerable.Range(0, 10)
     5                 .Select(i => i*i);
     6 
     7     //return seq1.Intersect(seq2); //0,1,4,9
     8     //return seq1.Except(seq2); //2,3,5,6,7,8
     9     //return seq1.Concat(seq2); //0,1,2,3,4,5,6,7,8,9,0,1,4,9,16,25,36,49,64,81
    10     //return seq1.Concat(seq2).Distinct(); //Delete duplicates
    11     return seq1.Union(seq2); //Also delete duplicates
    12 }

    Projection:

    • Select
    1 public dynamic GetNamesAndEmail(List<Customer> customerList)
    2 {
    3     var query = customerList.Select(c => new      //Anonymous Types
    4                     {
    5                         Name = c.LastName + "," + c.FirstName,
    6                         c.EmailAddress
    7                     });
    8     return query;
    9 }
    • SelectMany
     1 public IEnumerable<Customer> GetOverdueCustomers(List<Customer> customerList)
     2 {
     3     var query = customerList
     4                 .Select(c => c.InvoiceList                                             //One customer has a sequence of invoices
     5                                 .Where(i => (i.IsPaid ?? false) == false));            //return IEnumeralbe<IEnumeralbe<Inovice>> type
     6 
     7     
     8     var query2 = customerList
     9                 .SelectMany(c => c.InvoiceList                                         //SelectMany flatten resluting sequences into one sequence    
    10                                 .Where(i => (i.IsPaid ?? false) == false),
    11                                 (c, i) => c);                                        //return IEnumerable<Customer> type
    12 
    13 }

    Totaling:

    • Sum

    Grouping and Summing:

    • GroupBy
    public dynamic GetInvoiceTotalPaid(List<Invoice> invoiceList)
    {
        var query = invoiceList.GroupBy( inv => inv.IsPaid ?? false,       //null as false
                                        inv => inv.TotalAmount,            
                                        (groupKey, invTotals) => new    //returned results of GroupBy
                                        {
                                            Key = groupKey,
                                            InvoiceAmount = invTotals.Sum()    
                                        });
        foreach(var item in query)
        {
            Console.WriteLine(item.Key + ": " + item.InvoiceAmount);
        }
    
        return query;
    }
  • 相关阅读:
    python模块添加
    Python 的列表排序
    python中文处理问题
    排序算法堆排序
    搜索二分搜索
    排序算法(随机)快速排序(递归)
    排序算法计数排序
    OO设计原则总结
    异常控制以及进程调度
    ubuntu12.04 alternate win7 双系统安装
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/5998981.html
Copyright © 2011-2022 走看看