<转>LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Coun

  1. 介绍  
  2.     ·First - 返回集合中的第一个元素;不延迟  
  3.     ·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟  
  4.     ·Last - 返回集合中的最后一个元素;不延迟  
  5.     ·LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值)  
  6.     ·ElementAt - 返回集合中指定索引的元素;不延迟  
  7.     ·ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟  
  8.     ·Contains - 判断集合中是否包含有某一元素;不延迟  
  9.     ·Any - 判断集合中是否有元素满足某一条件;不延迟  
  10.     ·All - 判断集合中是否所有元素都满足某一条件;不延迟  
  11.     ·Count - 返回集合中的元素个数,返回int;不延迟  
  12.     ·LongCount - 返回集合中的元素个数,返回long;不延迟  
  13.     ·Sum - 集合应为数字类型集合,求其和;不延迟  
  14.     ·Min - 返回集合的最小值;不延迟  
  15.     ·Max - 返回集合的最大值;不延迟  
  16.     ·Average - 集合应为数字类型集合,求其平均值;不延迟  
  17.     ·Aggregate - 根据输入的表达式获取一个聚合值;不延迟  
  18.     ·Cast - 将集合转换为强类型集合;延迟  
  19.     ·DefaultIfEmpty - 查询结果为空则返回默认值;延迟  
  20.     ·SequenceEqual - 判断两个集合是否相同;不延迟  
  21.     ·OfType - 过滤集合中的指定类型;延迟  
  22.     ·ToArray - 将集合转换为数组;不延迟  
  23.     ·ToList - 将集合转换为List<T>集合;不延迟  
  24.     ·ToDictionary - 将集合转换为<K, V>集合;不延迟  
  25.   
  26.   
  27. 示例  
  28. Summary3.aspx.cs  
  29. using System;  
  30. using System.Data;  
  31. using System.Configuration;  
  32. using System.Collections;  
  33. using System.Linq;  
  34. using System.Web;  
  35. using System.Web.Security;  
  36. using System.Web.UI;  
  37. using System.Web.UI.WebControls;  
  38. using System.Web.UI.WebControls.WebParts;  
  39. using System.Web.UI.HtmlControls;  
  40. using System.Xml.Linq;  
  41.   
  42. using System.Collections.Generic;  
  43. using DAL;  
  44.   
  45. public partial class LINQ_Summary3 : System.Web.UI.Page  
  46. {  
  47.     NorthwindDataContext _ctx = new NorthwindDataContext();  
  48.     string[] _ary = null;  
  49.   
  50.     protected void Page_Load(object sender, EventArgs e)  
  51.     {  
  52.         _ary = new string[] { "asp.net", "csharp", "xhtml", "css", "javascript",   
  53.             "wcf", "wpf", "silverlight", "linq", "wf",   
  54.             "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs" };  
  55.   
  56.         // First - 返回集合中的第一个元素;不延迟  
  57.         // FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟  
  58.         Summary_First_FirstOrDefault();  
  59.   
  60.         // Last - 返回集合中的最后一个元素;不延迟  
  61.         // LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值)  
  62.         Summary_Last_LastOrDefault();  
  63.   
  64.         // ElementAt - 返回集合中指定索引的元素;不延迟  
  65.         // ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟  
  66.         Summary_ElementAt_ElementAtOrDefault();  
  67.   
  68.         // Contains - 判断集合中是否包含有某一元素;不延迟  
  69.         Summary_Contains();  
  70.   
  71.         // Any - 判断集合中是否有元素满足某一条件;不延迟  
  72.         Summary_Any();  
  73.   
  74.         // All - 判断集合中是否所有元素都满足某一条件;不延迟  
  75.         Summary_All();  
  76.   
  77.         // Count - 返回集合中的元素个数,返回int;不延迟  
  78.         // LongCount - 返回集合中的元素个数,返回long;不延迟  
  79.         Summary_Count_LongCount();  
  80.   
  81.         // Sum - 集合应为数字类型集合,求其和;不延迟  
  82.         Summary_Sum();  
  83.   
  84.         // Min - 返回集合的最小值;不延迟  
  85.         Summary_Min();  
  86.   
  87.         // Max - 返回集合的最大值;不延迟  
  88.         Summary_Max();  
  89.   
  90.         // Average - 集合应为数字类型集合,求其平均值;不延迟  
  91.         Summary_Average();  
  92.   
  93.         // Aggregate - 根据输入的表达式获取一个聚合值;不延迟  
  94.         Summary_Aggregate();  
  95.   
  96.         // Cast - 将集合转换为强类型集合;延迟  
  97.         Summary_Cast();  
  98.   
  99.         // DefaultIfEmpty - 查询结果为空则返回默认值;延迟  
  100.         Summary_DefaultIfEmpty();  
  101.   
  102.         // SequenceEqual - 判断两个集合是否相同;不延迟  
  103.         Summary_SequenceEqual();  
  104.   
  105.         // OfType - 过滤集合中的指定类型;延迟  
  106.         Summary_OfType();  
  107.   
  108.         // ToArray - 将集合转换为数组;不延迟  
  109.         Summary_ToArray();  
  110.   
  111.         // ToList - 将集合转换为List<T>集合;不延迟  
  112.         Summary_ToList();  
  113.   
  114.         // ToDictionary - 将集合转换为<K, V>集合;不延迟  
  115.         Summary_ToDictionary();  
  116.     }  
  117. }  
  118. First - 返回集合中的第一个元素;不延迟  
  119. FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟  
  120.     /**//// <summary>  
  121.     /// First - 返回集合中的第一个元素;不延迟  
  122.     /// FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟  
  123.     /// </summary>  
  124.     void Summary_First_FirstOrDefault()  
  125.     {  
  126.         string s = (from a in _ary  
  127.                     select a).First(a => a.StartsWith("s"));  
  128.         // string s = (from a in _ary  
  129.         //             select a).FirstOrDefault(a => a.StartsWith("xxx"));  
  130.         // s == null  
  131.   
  132.         result.InnerHtml += s + "<br />";  
  133.         result.InnerHtml += "<br />";  
  134.     }运行结果  
  135. silverlight  
  136.   
  137. Last - 返回集合中的最后一个元素;不延迟  
  138. LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值)  
  139.     /**//// <summary>  
  140.     /// Last - 返回集合中的最后一个元素;不延迟  
  141.     /// LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值)  
  142.     /// </summary>  
  143.     void Summary_Last_LastOrDefault()  
  144.     {  
  145.         string s = (from a in _ary  
  146.                     select a).Last(a => a.StartsWith("s"));  
  147.         // string s = (from a in _ary  
  148.         //             select a).LastOrDefault(a => a.StartsWith("sss"));  
  149.         // s == null  
  150.   
  151.         result.InnerHtml += s + "<br />";  
  152.         result.InnerHtml += "<br />";  
  153.     }运行结果  
  154. ssrs  
  155.   
  156. ElementAt - 返回集合中指定索引的元素;不延迟  
  157. ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟  
  158.     /**//// <summary>  
  159.     /// ElementAt - 返回集合中指定索引的元素;不延迟  
  160.     /// ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟  
  161.     /// </summary>  
  162.     void Summary_ElementAt_ElementAtOrDefault()  
  163.     {  
  164.         string s = (from a in _ary  
  165.                     select a).ElementAt(3);  
  166.         // string s = (from a in _ary  
  167.         //             select a).ElementAtOrDefault(1000);  
  168.         // s == null  
  169.   
  170.         result.InnerHtml += s + "<br />";  
  171.         result.InnerHtml += "<br />";  
  172.     }运行结果  
  173. css  
  174.   
  175. Contains - 判断集合中是否包含有某一元素;不延迟  
  176.     /**//// <summary>  
  177.     /// Contains - 判断集合中是否包含有某一元素;不延迟  
  178.     /// </summary>  
  179.     void Summary_Contains()  
  180.     {  
  181.         bool b = (from a in _ary  
  182.                   select a).Contains("javascript");  
  183.   
  184.         result.InnerHtml += b.ToString() + "<br />";  
  185.         result.InnerHtml += "<br />";  
  186.     }运行结果  
  187. True  
  188.   
  189. Any - 判断集合中是否有元素满足某一条件;不延迟  
  190.     /**//// <summary>  
  191.     /// Any - 判断集合中是否有元素满足某一条件;不延迟  
  192.     /// </summary>  
  193.     void Summary_Any()  
  194.     {  
  195.         bool b = (from a in _ary  
  196.                   select a).Any(p => p.Length > 10);  
  197.   
  198.         result.InnerHtml += b.ToString() + "<br />";  
  199.         result.InnerHtml += "<br />";  
  200.     }运行结果  
  201. True  
  202.   
  203. All - 判断集合中是否所有元素都满足某一条件;不延迟  
  204.     /**//// <summary>  
  205.     /// All - 判断集合中是否所有元素都满足某一条件;不延迟  
  206.     /// </summary>  
  207.     void Summary_All()  
  208.     {  
  209.         bool b = (from a in _ary  
  210.                   select a).All(p => p.Length > 10);  
  211.   
  212.         result.InnerHtml += b.ToString() + "<br />";  
  213.         result.InnerHtml += "<br />";  
  214.     }运行结果  
  215. False  
  216.   
  217. Count - 返回集合中的元素个数,返回int;不延迟  
  218. LongCount - 返回集合中的元素个数,返回long;不延迟  
  219.     /**//// <summary>  
  220.     /// Count - 返回集合中的元素个数,返回int;不延迟  
  221.     /// LongCount - 返回集合中的元素个数,返回long;不延迟  
  222.     /// </summary>  
  223.     void Summary_Count_LongCount()  
  224.     {  
  225.         int i = (from a in _ary  
  226.                  select a).Count(p => p.Length > 10);  
  227.         // long i = (from a in _ary  
  228.         //           select a).LongCount(p => p.Length > 10);  
  229.   
  230.         result.InnerHtml += i.ToString() + "<br />";  
  231.         result.InnerHtml += "<br />";  
  232.     }运行结果  
  233. 2  
  234.   
  235. Sum - 集合应为数字类型集合,求其和;不延迟  
  236.     /**//// <summary>  
  237.     /// Sum - 集合应为数字类型集合,求其和;不延迟  
  238.     /// </summary>  
  239.     void Summary_Sum()  
  240.     {  
  241.         int i = (from a in _ary  
  242.                  select a.Length).Sum();  
  243.   
  244.         result.InnerHtml += i.ToString() + "<br />";  
  245.         result.InnerHtml += "<br />";  
  246.     }运行结果  
  247. 87  
  248.   
  249. Min - 返回集合的最小值;不延迟  
  250.     /**//// <summary>  
  251.     /// Min - 返回集合的最小值;不延迟  
  252.     /// </summary>  
  253.     void Summary_Min()  
  254.     {  
  255.         int i = (from a in _ary  
  256.                  select a.Length).Min();  
  257.   
  258.         result.InnerHtml += i.ToString() + "<br />";  
  259.         result.InnerHtml += "<br />";  
  260.     }运行结果  
  261. 2  
  262.   
  263. Max - 返回集合的最大值;不延迟  
  264.     /**//// <summary>  
  265.     /// Max - 返回集合的最大值;不延迟  
  266.     /// </summary>  
  267.     void Summary_Max()  
  268.     {  
  269.         int i = (from a in _ary  
  270.                  select a.Length).Max();  
  271.   
  272.         result.InnerHtml += i.ToString() + "<br />";  
  273.         result.InnerHtml += "<br />";  
  274.     }运行结果  
  275. 12  
  276.   
  277. Average - 集合应为数字类型集合,求其平均值;不延迟  
  278.     /**//// <summary>  
  279.     /// Average - 集合应为数字类型集合,求其平均值;不延迟  
  280.     /// </summary>  
  281.     void Summary_Average()  
  282.     {  
  283.         double d = (from a in _ary  
  284.                     select a.Length).Average();  
  285.   
  286.         result.InnerHtml += d.ToString() + "<br />";  
  287.         result.InnerHtml += "<br />";  
  288.     }运行结果  
  289. 5.8  
  290.   
  291. Aggregate - 根据输入的表达式获取一个聚合值;不延迟  
  292.     /**//// <summary>  
  293.     /// Aggregate - 根据输入的表达式获取一个聚合值;不延迟  
  294.     /// </summary>  
  295.     void Summary_Aggregate()  
  296.     {  
  297.         // 以下算法的Aggregate相当于Sum  
  298.         double d = (from a in _ary  
  299.                     select a.Length).Aggregate((x, y) => x + y);  
  300.   
  301.         result.InnerHtml += d.ToString() + "<br />";  
  302.         result.InnerHtml += "<br />";  
  303.     }运行结果  
  304. 87  
  305.   
  306. Cast - 将集合转换为强类型集合;延迟  
  307.     /**//// <summary>  
  308.     /// Cast - 将集合转换为强类型集合;延迟  
  309.     /// </summary>  
  310.     void Summary_Cast()  
  311.     {  
  312.         ArrayList al = new ArrayList();  
  313.         al.Add("asp.net");  
  314.         al.Add("csharp");  
  315.         al.Add("xhtml");  
  316.   
  317.         var list = al.Cast<string>();  
  318.   
  319.         foreach (string s in list)  
  320.         {  
  321.             result.InnerHtml += s + "<br />";  
  322.         }  
  323.         result.InnerHtml += "<br />";  
  324.     }运行结果  
  325. asp.net  
  326. csharp  
  327. xhtml  
  328.   
  329. DefaultIfEmpty - 查询结果为空则返回默认值;延迟  
  330.     /**//// <summary>  
  331.     /// DefaultIfEmpty - 查询结果为空则返回默认值;延迟  
  332.     /// </summary>  
  333.     void Summary_DefaultIfEmpty()  
  334.     {  
  335.         var list = (from a in _ary  
  336.                     where a.Length > 100  
  337.                     select a).DefaultIfEmpty("xxx");  
  338.   
  339.         foreach (string s in list)  
  340.         {  
  341.             result.InnerHtml += s + "<br />";  
  342.         }  
  343.         result.InnerHtml += "<br />";  
  344.     }运行结果  
  345. xxx  
  346.   
  347. SequenceEqual - 判断两个集合是否相同;不延迟  
  348.     /**//// <summary>  
  349.     /// SequenceEqual - 判断两个集合是否相同;不延迟  
  350.     /// </summary>  
  351.     void Summary_SequenceEqual()  
  352.     {  
  353.         bool b = (from a in _ary  
  354.                   where a.Length > 10  
  355.                   select a).SequenceEqual(from a in _ary  
  356.                                           where a.Length > 10  
  357.                                           select a);  
  358.   
  359.         result.InnerHtml += b.ToString() + "<br />";  
  360.         result.InnerHtml += "<br />";  
  361.     }运行结果  
  362. True  
  363.   
  364. OfType - 过滤集合中的指定类型;延迟  
  365.     /**//// <summary>  
  366.     /// OfType - 过滤集合中的指定类型;延迟  
  367.     /// </summary>  
  368.     void Summary_OfType()  
  369.     {  
  370.         object[] objects = { 1, "a", 2, "b", 3, "c" };  
  371.   
  372.         var list = objects.OfType<string>();  
  373.   
  374.         foreach (string s in list)  
  375.         {  
  376.             result.InnerHtml += s + "<br />";  
  377.         }  
  378.         result.InnerHtml += "<br />";  
  379.     }运行结果  
  380. a  
  381. b  
  382. c  
  383.   
  384. ToArray - 将集合转换为数组;不延迟  
  385.     /**//// <summary>  
  386.     /// ToArray - 将集合转换为数组;不延迟  
  387.     /// </summary>  
  388.     void Summary_ToArray()  
  389.     {  
  390.         string[] ary = (from p in _ctx.Products  
  391.                         where p.ProductName.Length > 30  
  392.                         select p.ProductName).ToArray();  
  393.   
  394.         foreach (string s in ary)  
  395.         {  
  396.             result.InnerHtml += s + "<br />";  
  397.         }  
  398.         result.InnerHtml += "<br />";  
  399.     }运行结果  
  400. Jack's New England Clam Chowder  
  401. Louisiana Fiery Hot Pepper Sauce  
  402. Original Frankfurter grüne So?e  
  403. Uncle Bob's Organic Dried Pears  
  404.   
  405. ToList - 将集合转换为List<T>集合;不延迟  
  406.     /**//// <summary>  
  407.     /// ToList - 将集合转换为List<T>集合;不延迟  
  408.     /// </summary>  
  409.     void Summary_ToList()  
  410.     {  
  411.         var list = (from a in _ary  
  412.                     where a.Length > 10  
  413.                     select a).ToList();  
  414.   
  415.         foreach (string s in list)  
  416.         {  
  417.             result.InnerHtml += s + "<br />";  
  418.         }  
  419.         result.InnerHtml += "<br />";  
  420.     }运行结果  
  421. silverlight  
  422. asp.net ajax  
  423.   
  424. ToDictionary - 将集合转换为<K, V>集合;不延迟  
  425.     /**//// <summary>  
  426.     /// ToDictionary - 将集合转换为<K, V>集合;不延迟  
  427.     /// </summary>  
  428.     void Summary_ToDictionary()  
  429.     {  
  430.         var dic = (from p in _ctx.Products  
  431.                    where p.ProductName.Length > 30  
  432.                    select p).ToDictionary(p => p.ProductID);  
  433.   
  434.         foreach (var p in dic)  
  435.         {  
  436.             result.InnerHtml += p.Key + ":" + p.Value.ProductName + "<br />";  
  437.         }  
  438.         result.InnerHtml += "<br />";  
  439.     }运行结果  
  440. 7:Uncle Bob's Organic Dried Pears  
  441. 41:Jack's New England Clam Chowder  
  442. 65:Louisiana Fiery Hot Pepper Sauce  
  443. 77:Original Frankfurter grüne So?e  

posted on 2016-05-03 17:19  treasureZoe  阅读(177)  评论(0编辑  收藏  举报

导航