101 LINQ Samples: Aggregator Operators

Count - Simple

This sample uses Count to get the number of unique factors of 300.

public void Linq73(){    int[] factorsOf300 = { 22355 };     int uniqueFactors = factorsOf300.Distinct().Count();     Console.WriteLine("There are {0} unique factors of 300.", uniqueFactors);}

Result

There are 3 unique factors of 300.

Count - Conditional

This sample uses Count to get the number of odd ints in the array.

public void Linq74(){    int[] numbers = { 5413986720 };     int oddNumbers = numbers.Count(n => n % 2 == 1);     Console.WriteLine("There are {0} odd numbers in the list.", oddNumbers);}

Result

There are 5 odd numbers in the list.

Count - Nested

This sample uses Count to return a list of customers and how many orders each has.

public void Linq76(){    List<Customer> customers = GetCustomerList();     var orderCounts =        from c in customers        select new { c.CustomerID, OrderCount = c.Orders.Count() };     ObjectDumper.Write(orderCounts);}

Result

CustomerID=ALFKI 
CustomerID=ANATR 
CustomerID=ANTON 
CustomerID=AROUT 
CustomerID=BERGS 
CustomerID=BLAUS 
CustomerID=BLONP 
CustomerID=BOLID 
CustomerID=BONAP 
CustomerID=BOTTM 
CustomerID=BSBEV 
CustomerID=CACTU 
CustomerID=CENTC 
CustomerID=CHOPS 
CustomerID=COMMI 
CustomerID=CONSH 
CustomerID=DRACD 
CustomerID=DUMON 
CustomerID=EASTC 
CustomerID=ERNSH 
CustomerID=FAMIA 
CustomerID=FISSA 
CustomerID=FOLIG 
CustomerID=FOLKO 
CustomerID=FRANK 
CustomerID=FRANR 
CustomerID=FRANS 
CustomerID=FURIB 
CustomerID=GALED 
CustomerID=GODOS 
CustomerID=GOURL 
CustomerID=GREAL 
CustomerID=GROSR 
CustomerID=HANAR 
CustomerID=HILAA 
CustomerID=HUNGC 
CustomerID=HUNGO 
CustomerID=ISLAT 
CustomerID=KOENE 
CustomerID=LACOR 
CustomerID=LAMAI 
CustomerID=LAUGB 
CustomerID=LAZYK 
CustomerID=LEHMS 
CustomerID=LETSS 
CustomerID=LILAS 
CustomerID=LINOD 
CustomerID=LONEP 
CustomerID=MAGAA 
CustomerID=MAISD 
CustomerID=MEREP 
CustomerID=MORGK 
CustomerID=NORTS 
CustomerID=OCEAN 
CustomerID=OLDWO 
CustomerID=OTTIK 
CustomerID=PARIS 
CustomerID=PERIC 
CustomerID=PICCO 
CustomerID=PRINI 
CustomerID=QUEDE 
CustomerID=QUEEN 
CustomerID=QUICK 
CustomerID=RANCH 
CustomerID=RATTC 
CustomerID=REGGC 
CustomerID=RICAR 
CustomerID=RICSU 
CustomerID=ROMEY 
CustomerID=SANTG 
CustomerID=SAVEA 
CustomerID=SEVES 
CustomerID=SIMOB 
CustomerID=SPECD 
CustomerID=SPLIR 
CustomerID=SUPRD 
CustomerID=THEBI 
CustomerID=THECR 
CustomerID=TOMSP 
CustomerID=TORTU 
CustomerID=TRADH 
CustomerID=TRAIH 
CustomerID=VAFFE 
CustomerID=VICTE 
CustomerID=VINET 
CustomerID=WANDK 
CustomerID=WARTH 
CustomerID=WELLI 
CustomerID=WHITC 
CustomerID=WILMK 
CustomerID=WOLZA
OrderCount=6 
OrderCount=4 
OrderCount=7 
OrderCount=13 
OrderCount=18 
OrderCount=7 
OrderCount=11 
OrderCount=3 
OrderCount=17 
OrderCount=14 
OrderCount=10 
OrderCount=6 
OrderCount=1 
OrderCount=8 
OrderCount=5 
OrderCount=3 
OrderCount=6 
OrderCount=4 
OrderCount=8 
OrderCount=30 
OrderCount=7 
OrderCount=0 
OrderCount=5 
OrderCount=19 
OrderCount=15 
OrderCount=3 
OrderCount=6 
OrderCount=8 
OrderCount=5 
OrderCount=10 
OrderCount=9 
OrderCount=11 
OrderCount=2 
OrderCount=14 
OrderCount=18 
OrderCount=5 
OrderCount=19 
OrderCount=10 
OrderCount=14 
OrderCount=4 
OrderCount=14 
OrderCount=3 
OrderCount=2 
OrderCount=15 
OrderCount=4 
OrderCount=14 
OrderCount=12 
OrderCount=8 
OrderCount=10 
OrderCount=7 
OrderCount=13 
OrderCount=5 
OrderCount=3 
OrderCount=5 
OrderCount=10 
OrderCount=9 
OrderCount=0 
OrderCount=6 
OrderCount=10 
OrderCount=6 
OrderCount=9 
OrderCount=13 
OrderCount=28 
OrderCount=5 
OrderCount=18 
OrderCount=12 
OrderCount=11 
OrderCount=10 
OrderCount=5 
OrderCount=6 
OrderCount=31 
OrderCount=9 
OrderCount=7 
OrderCount=4 
OrderCount=9 
OrderCount=12 
OrderCount=4 
OrderCount=3 
OrderCount=5 
OrderCount=10 
OrderCount=7 
OrderCount=3 
OrderCount=11 
OrderCount=10 
OrderCount=4 
OrderCount=10 
OrderCount=15 
OrderCount=9 
OrderCount=14 
OrderCount=8 
OrderCount=7


Count - Grouped

This sample uses Count to return a list of categories and how many products each has.

public void Linq77(){    List<Product> products = GetProductList();     var categoryCounts =        from p in products        group p by p.Category into g        select new { Category = g.Key, ProductCount = g.Count() };     ObjectDumper.Write(categoryCounts}

Result

Category=Beverages 
Category=Condiments 
Category=Produce 
Category=Meat/Poultry 
Category=Seafood 
Category=Dairy Products 
Category=Confections 
Category=Grains/Cereals
ProductCount=12 
ProductCount=12 
ProductCount=5 
ProductCount=6 
ProductCount=12 
ProductCount=10 
ProductCount=13 
ProductCount=7


Sum - Simple

This sample uses Sum to get the total of the numbers in an array.

public void Linq78(){    int[] numbers = { 5413986720 };     double numSum = numbers.Sum();     Console.WriteLine("The sum of the numbers is {0}.", numSum);}

Result

The sum of the numbers is 45.

Sum - Projection

This sample uses Sum to get the total number of characters of all words in the array.

public void Linq79(){    string[] words = { "cherry""apple""blueberry" };     double totalChars = words.Sum(w => w.Length);     Console.WriteLine("There are a total of {0} characters in these words.", totalChars);}

Result

There are a total of 20 characters in these words.

Sum - Grouped

This sample uses Sum to get the total units in stock for each product category.

public void Linq80(){    List<Product> products = GetProductList();     var categories =        from p in products        group p by p.Category into g        select new { Category = g.Key, TotalUnitsInStock = g.Sum(p => p.UnitsInStock) };     ObjectDumper.Write(categories);}

Result

Category=Beverages 
Category=Condiments 
Category=Produce 
Category=Meat/Poultry 
Category=Seafood 
Category=Dairy Products 
Category=Confections 
Category=Grains/Cereals
TotalUnitsInStock=559 
TotalUnitsInStock=507 
TotalUnitsInStock=100 
TotalUnitsInStock=165 
TotalUnitsInStock=701 
TotalUnitsInStock=393 
TotalUnitsInStock=386 
TotalUnitsInStock=308


Min - Simple

This sample uses Min to get the lowest number in an array.

public void Linq81(){    int[] numbers = { 5413986720 };     int minNum = numbers.Min();     Console.WriteLine("The minimum number is {0}.", minNum);}

Result

The minimum number is 0.

Min - Projection

This sample uses Min to get the length of the shortest word in an array.

public void Linq82(){    string[] words = { "cherry""apple""blueberry" };     int shortestWord = words.Min(w => w.Length);     Console.WriteLine("The shortest word is {0} characters long.", shortestWord);}

Result

The shortest word is 5 characters long.

Min - Grouped

This sample uses Min to get the cheapest price among each category's products.

public void Linq83(){    List<Product> products = GetProductList();     var categories =        from p in products        group p by p.Category into g        select new { Category = g.Key, CheapestPrice = g.Min(p => p.UnitPrice) };     ObjectDumper.Write(categories);}

Result

Category=Beverages
Category=Condiments
Category=Produce
Category=Meat/Poultry
Category=Seafood
Category=Dairy Products
Category=Confections
Category=Grains/Cereals
CheapestPrice=4.5000
CheapestPrice=10.0000
CheapestPrice=10.0000
CheapestPrice=7.4500
CheapestPrice=6.0000
CheapestPrice=2.5000
CheapestPrice=9.2000
CheapestPrice=7.0000


Min - Elements

This sample uses Min to get the products with the cheapest price in each category.

public void Linq84(){    List<Product> products = GetProductList();     var categories =        from p in products        group p by p.Category into g        let minPrice = g.Min(p => p.UnitPrice)        select new { Category = g.Key, CheapestProducts = g.Where(p => p.UnitPrice == minPrice) };     ObjectDumper.Write(categories, 1);}

Result

Category=Beverages      CheapestProducts=... 
  CheapestProducts: ProductID=24  ProductName=Guaraná Fantástica  Category=Beverages      UnitPrice=4.5000        UnitsInStock=20 
Category=Condiments    CheapestProducts=... 
  CheapestProducts: ProductID=3  ProductName=Aniseed Syrup      Category=Condiments    UnitPrice=10.0000      UnitsInStock=13 
Category=Produce        CheapestProducts=... 
  CheapestProducts: ProductID=74  ProductName=Longlife Tofu      Category=Produce        UnitPrice=10.0000      UnitsInStock=4 
Category=Meat/Poultry  CheapestProducts=... 
  CheapestProducts: ProductID=54  ProductName=Tourtière  Category=Meat/Poultry  UnitPrice=7.4500        UnitsInStock=21 
Category=Seafood        CheapestProducts=... 
  CheapestProducts: ProductID=13  ProductName=Konbu      Category=Seafood        UnitPrice=6.0000        UnitsInStock=24 
Category=Dairy Products        CheapestProducts=... 
  CheapestProducts: ProductID=33  ProductName=Geitost    Category=Dairy Products        UnitPrice=2.5000        UnitsInStock=112 
Category=Confections    CheapestProducts=... 
  CheapestProducts: ProductID=19  ProductName=Teatime Chocolate Biscuits  Category=Confections    UnitPrice=9.2000        UnitsInStock=25 
Category=Grains/Cereals        CheapestProducts=... 
  CheapestProducts: ProductID=52  ProductName=Filo Mix    Category=Grains/Cereals        UnitPrice=7.0000        UnitsInStock=38

Max - Simple

This sample uses Max to get the highest number in an array.

public void Linq85(){    int[] numbers = { 5413986720 };     int maxNum = numbers.Max();     Console.WriteLine("The maximum number is {0}.", maxNum);}

Result

The maximum number is 9.

Max - Projection

This sample uses Max to get the length of the longest word in an array.

public void Linq86(){    string[] words = { "cherry""apple""blueberry" };     int longestLength = words.Max(w => w.Length);     Console.WriteLine("The longest word is {0} characters long.", longestLength);}

Result

The longest word is 9 characters long.

Max - Grouped

This sample uses Max to get the most expensive price among each category's products.

public void Linq87(){    List<Product> products = GetProductList();     var categories =        from p in products        group p by p.Category into g        select new { Category = g.Key, MostExpensivePrice = g.Max(p => p.UnitPrice) };     ObjectDumper.Write(categories);}

Result

Category=Beverages 
Category=Condiments 
Category=Produce 
Category=Meat/Poultry 
Category=Seafood 
Category=Dairy Products 
Category=Confections 
Category=Grains/Cereals
MostExpensivePrice=263.5000 
MostExpensivePrice=43.9000 
MostExpensivePrice=53.0000 
MostExpensivePrice=123.7900 
MostExpensivePrice=62.5000 
MostExpensivePrice=55.0000 
MostExpensivePrice=81.0000 
MostExpensivePrice=38.0000


Max - Elements

This sample uses Max to get the products with the most expensive price in each category.

public void Linq88(){    List<Product> products = GetProductList();     var categories =        from p in products        group p by p.Category into g        let maxPrice = g.Max(p => p.UnitPrice)        select new { Category = g.Key, MostExpensiveProducts = g.Where(p => p.UnitPrice == maxPrice) };     ObjectDumper.Write(categories, 1);}

Result

Category=Beverages      MostExpensiveProducts=... 
  MostExpensiveProducts: ProductID=38    ProductName=Côte de Blaye      Category=Beverages      UnitPrice=263.5000      UnitsInStock=17 
Category=Condiments    MostExpensiveProducts=... 
  MostExpensiveProducts: ProductID=63    ProductName=Vegie-spread        Category=Condiments    UnitPrice=43.9000      UnitsInStock=24 
Category=Produce        MostExpensiveProducts=... 
  MostExpensiveProducts: ProductID=51    ProductName=Manjimup Dried Apples      Category=Produce        UnitPrice=53.0000      UnitsInStock=20 
Category=Meat/Poultry  MostExpensiveProducts=... 
  MostExpensiveProducts: ProductID=29    ProductName=Thüringer Rostbratwurst    Category=Meat/Poultry  UnitPrice=123.7900      UnitsInStock=0 
Category=Seafood        MostExpensiveProducts=... 
  MostExpensiveProducts: ProductID=18    ProductName=Carnarvon Tigers    Category=Seafood        UnitPrice=62.5000      UnitsInStock=42 
Category=Dairy Products        MostExpensiveProducts=... 
  MostExpensiveProducts: ProductID=59    ProductName=Raclette Courdavault        Category=Dairy Products        UnitPrice=55.0000      UnitsInStock=79 
Category=Confections    MostExpensiveProducts=... 
  MostExpensiveProducts: ProductID=20    ProductName=Sir Rodney's Marmalade      Category=Confections    UnitPrice=81.0000      UnitsInStock=40 
Category=Grains/Cereals        MostExpensiveProducts=... 
  MostExpensiveProducts: ProductID=56    ProductName=Gnocchi di nonna Alice      Category=Grains/Cereals        UnitPrice=38.0000      UnitsInStock=21

Average - Simple

This sample uses Average to get the average of all numbers in an array.

public void Linq89(){    int[] numbers = { 5413986720 };     double averageNum = numbers.Average();     Console.WriteLine("The average number is {0}.", averageNum);}

Result

The average number is 4.5.

Average - Projection

This sample uses Average to get the average length of the words in the array.

public void Linq90(){    string[] words = { "cherry""apple""blueberry" };     double averageLength = words.Average(w => w.Length);     Console.WriteLine("The average word length is {0} characters.", averageLength);}

Result

The average word length is 6.66666666666667 characters.

Average - Grouped

This sample uses Average to get the average price of each category's products.

public void Linq91(){    List<Product> products = GetProductList();     var categories =        from p in products        group p by p.Category into g        select new { Category = g.Key, AveragePrice = g.Average(p => p.UnitPrice) };     ObjectDumper.Write(categories);}

Result

Category=Beverages 
Category=Condiments 
Category=Produce 
Category=Meat/Poultry 
Category=Seafood 
Category=Dairy Products 
Category=Confections 
Category=Grains/Cereals
AveragePrice=37.979166666666666666666666667 
AveragePrice=23.0625 
AveragePrice=32.3700 
AveragePrice=54.006666666666666666666666667 
AveragePrice=20.6825 
AveragePrice=28.7300 
AveragePrice=25.1600 
AveragePrice=20.2500


Aggregate - Simple

This sample uses Aggregate to create a running product on the array that calculates the total product of all elements.

public void Linq92(){    double[] doubles = { 1.72.31.94.12.9 };     double product = doubles.Aggregate((runningProduct, nextFactor) => runningProduct * nextFactor);     Console.WriteLine("Total product of all numbers: {0}", product);}

Result

Total product of all numbers: 88.33081

Aggregate - Seed

This sample uses Aggregate to create a running account balance that subtracts each withdrawal from the initial balance of 100, as long as the balance never drops below 0

public void Linq93(){    double startBalance = 100.0;     int[] attemptedWithdrawals = { 20104050107030 };     double endBalance =        attemptedWithdrawals.Aggregate(startBalance,            (balance, nextWithdrawal) =>                ((nextWithdrawal <= balance) ? (balance - nextWithdrawal) : balance));     Console.WriteLine("Ending balance: {0}", endBalance);}

Result

Ending balance: 20

转载于:https://www.cnblogs.com/zjz008/archive/2011/03/13/1982930.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值