LINQ查询操做符

    LINQ查询操做符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Counjavascript


介绍  css

  ·First - 返回集合中的第一个元素;不延迟  html

  ·FirstOrDefault - 返回集合中的第一个元素(若是没有则返回默认值);不延迟  java

  ·Last - 返回集合中的最后一个元素;不延迟  ajax

  ·LastOrDefault - 返回集合中的最后一个元素(若是没有则返回默认值)  算法

  ·ElementAt - 返回集合中指定索引的元素;不延迟  sql

  ·ElementAtOrDefault - 返回集合中指定索引的元素(若是没有则返回默认值);不延迟  数组

  ·Contains - 判断集合中是否包含有某一元素;不延迟  asp.net

  ·Any - 判断集合中是否有元素知足某一条件;不延迟  ide

  ·All - 判断集合中是否全部元素都知足某一条件;不延迟  

  ·Count - 返回集合中的元素个数,返回int;不延迟  

  ·LongCount - 返回集合中的元素个数,返回long;不延迟  

  ·Sum - 集合应为数字类型集合,求其和;不延迟  

  ·Min - 返回集合的最小值;不延迟  

  ·Max - 返回集合的最大值;不延迟  

  ·Average - 集合应为数字类型集合,求其平均值;不延迟  

  ·Aggregate - 根据输入的表达式获取一个聚合值;不延迟  

  ·Cast - 将集合转换为强类型集合;延迟  

  ·DefaultIfEmpty - 查询结果为空则返回默认值;延迟  

  ·SequenceEqual - 判断两个集合是否相同;不延迟  

  ·OfType - 过滤集合中的指定类型;延迟  

  ·ToArray - 将集合转换为数组;不延迟  

  ·ToList - 将集合转换为List<T>集合;不延迟  

  ·ToDictionary - 将集合转换为<K, V>集合;不延迟  


  1. 示例  

  1. Summary3.aspx.cs  

  2. using System;  

  3. using System.Data;  

  4. using System.Configuration;  

  5. using System.Collections;  

  6. using System.Linq;  

  7. using System.Web;  

  8. using System.Web.Security;  

  9. using System.Web.UI;  

  10. using System.Web.UI.WebControls;  

  11. using System.Web.UI.WebControls.WebParts;  

  12. using System.Web.UI.HtmlControls;  

  13. using System.Xml.Linq;  

  14.   

  15. using System.Collections.Generic;  

  16. using DAL;  

  17.   

  18. public partial class LINQ_Summary3 : System.Web.UI.Page  

  19. {  

  20.     NorthwindDataContext _ctx = new NorthwindDataContext();  

  21.     string[] _ary = null;  

  22.   

  23.     protected void Page_Load(object sender, EventArgs e)  

  24.     {  

  25.         _ary = new string[] { "asp.net""csharp""xhtml""css""javascript",   

  26.             "wcf""wpf""silverlight""linq""wf",   

  27.             "sqlserver""asp.net ajax""ssis""ssas""***s" };  

  28.   

  29.         // First - 返回集合中的第一个元素;不延迟  

  30.         // FirstOrDefault - 返回集合中的第一个元素(若是没有则返回默认值);不延迟  

  31.         Summary_First_FirstOrDefault();  

  32.   

  33.         // Last - 返回集合中的最后一个元素;不延迟  

  34.         // LastOrDefault - 返回集合中的最后一个元素(若是没有则返回默认值)  

  35.         Summary_Last_LastOrDefault();  

  36.   

  37.         // ElementAt - 返回集合中指定索引的元素;不延迟  

  38.         // ElementAtOrDefault - 返回集合中指定索引的元素(若是没有则返回默认值);不延迟  

  39.         Summary_ElementAt_ElementAtOrDefault();  

  40.   

  41.         // Contains - 判断集合中是否包含有某一元素;不延迟  

  42.         Summary_Contains();  

  43.   

  44.         // Any - 判断集合中是否有元素知足某一条件;不延迟  

  45.         Summary_Any();  

  46.   

  47.         // All - 判断集合中是否全部元素都知足某一条件;不延迟  

  48.         Summary_All();  

  49.   

  50.         // Count - 返回集合中的元素个数,返回int;不延迟  

  51.         // LongCount - 返回集合中的元素个数,返回long;不延迟  

  52.         Summary_Count_LongCount();  

  53.   

  54.         // Sum - 集合应为数字类型集合,求其和;不延迟  

  55.         Summary_Sum();  

  56.   

  57.         // Min - 返回集合的最小值;不延迟  

  58.         Summary_Min();  

  59.   

  60.         // Max - 返回集合的最大值;不延迟  

  61.         Summary_Max();  

  62.   

  63.         // Average - 集合应为数字类型集合,求其平均值;不延迟  

  64.         Summary_Average();  

  65.   

  66.         // Aggregate - 根据输入的表达式获取一个聚合值;不延迟  

  67.         Summary_Aggregate();  

  68.   

  69.         // Cast - 将集合转换为强类型集合;延迟  

  70.         Summary_Cast();  

  71.   

  72.         // DefaultIfEmpty - 查询结果为空则返回默认值;延迟  

  73.         Summary_DefaultIfEmpty();  

  74.   

  75.         // SequenceEqual - 判断两个集合是否相同;不延迟  

  76.         Summary_SequenceEqual();  

  77.   

  78.         // OfType - 过滤集合中的指定类型;延迟  

  79.         Summary_OfType();  

  80.   

  81.         // ToArray - 将集合转换为数组;不延迟  

  82.         Summary_ToArray();  

  83.   

  84.         // ToList - 将集合转换为List<T>集合;不延迟  

  85.         Summary_ToList();  

  86.   

  87.         // ToDictionary - 将集合转换为<K, V>集合;不延迟  

  88.         Summary_ToDictionary();  

  89.     }  

  90. }  

  91. First - 返回集合中的第一个元素;不延迟  

  92. FirstOrDefault - 返回集合中的第一个元素(若是没有则返回默认值);不延迟  

  93.     /**//// <summary>  

  94.     /// First - 返回集合中的第一个元素;不延迟  

  95.     /// FirstOrDefault - 返回集合中的第一个元素(若是没有则返回默认值);不延迟  

  96.     /// </summary>  

  97.     void Summary_First_FirstOrDefault()  

  98.     {  

  99.         string s = (from a in _ary  

  100.                     select a).First(a => a.StartsWith("s"));  

  101.         // string s = (from a in _ary  

  102.         //             select a).FirstOrDefault(a => a.StartsWith("xxx"));  

  103.         // s == null  

  104.   

  105.         result.InnerHtml += s + "<br />";  

  106.         result.InnerHtml += "<br />";  

  107.     }运行结果  

  108. silverlight  

  109.   

  110. Last - 返回集合中的最后一个元素;不延迟  

  111. LastOrDefault - 返回集合中的最后一个元素(若是没有则返回默认值)  

  112.     /**//// <summary>  

  113.     /// Last - 返回集合中的最后一个元素;不延迟  

  114.     /// LastOrDefault - 返回集合中的最后一个元素(若是没有则返回默认值)  

  115.     /// </summary>  

  116.     void Summary_Last_LastOrDefault()  

  117.     {  

  118.         string s = (from a in _ary  

  119.                     select a).Last(a => a.StartsWith("s"));  

  120.         // string s = (from a in _ary  

  121.         //             select a).LastOrDefault(a => a.StartsWith("sss"));  

  122.         // s == null  

  123.   

  124.         result.InnerHtml += s + "<br />";  

  125.         result.InnerHtml += "<br />";  

  126.     }运行结果  

  127. ***s  

  128.   

  129. ElementAt - 返回集合中指定索引的元素;不延迟  

  130. ElementAtOrDefault - 返回集合中指定索引的元素(若是没有则返回默认值);不延迟  

  131.     /**//// <summary>  

  132.     /// ElementAt - 返回集合中指定索引的元素;不延迟  

  133.     /// ElementAtOrDefault - 返回集合中指定索引的元素(若是没有则返回默认值);不延迟  

  134.     /// </summary>  

  135.     void Summary_ElementAt_ElementAtOrDefault()  

  136.     {  

  137.         string s = (from a in _ary  

  138.                     select a).ElementAt(3);  

  139.         // string s = (from a in _ary  

  140.         //             select a).ElementAtOrDefault(1000);  

  141.         // s == null  

  142.   

  143.         result.InnerHtml += s + "<br />";  

  144.         result.InnerHtml += "<br />";  

  145.     }运行结果  

  146. css  

  147.   

  148. Contains - 判断集合中是否包含有某一元素;不延迟  

  149.     /**//// <summary>  

  150.     /// Contains - 判断集合中是否包含有某一元素;不延迟  

  151.     /// </summary>  

  152.     void Summary_Contains()  

  153.     {  

  154.         bool b = (from a in _ary  

  155.                   select a).Contains("javascript");  

  156.   

  157.         result.InnerHtml += b.ToString() + "<br />";  

  158.         result.InnerHtml += "<br />";  

  159.     }运行结果  

  160. True  

  161.   

  162. Any - 判断集合中是否有元素知足某一条件;不延迟  

  163.     /**//// <summary>  

  164.     /// Any - 判断集合中是否有元素知足某一条件;不延迟  

  165.     /// </summary>  

  166.     void Summary_Any()  

  167.     {  

  168.         bool b = (from a in _ary  

  169.                   select a).Any(p => p.Length > 10);  

  170.   

  171.         result.InnerHtml += b.ToString() + "<br />";  

  172.         result.InnerHtml += "<br />";  

  173.     }运行结果  

  174. True  

  175.   

  176. All - 判断集合中是否全部元素都知足某一条件;不延迟  

  177.     /**//// <summary>  

  178.     /// All - 判断集合中是否全部元素都知足某一条件;不延迟  

  179.     /// </summary>  

  180.     void Summary_All()  

  181.     {  

  182.         bool b = (from a in _ary  

  183.                   select a).All(p => p.Length > 10);  

  184.   

  185.         result.InnerHtml += b.ToString() + "<br />";  

  186.         result.InnerHtml += "<br />";  

  187.     }运行结果  

  188. False  

  189.   

  190. Count - 返回集合中的元素个数,返回int;不延迟  

  191. LongCount - 返回集合中的元素个数,返回long;不延迟  

  192.     /**//// <summary>  

  193.     /// Count - 返回集合中的元素个数,返回int;不延迟  

  194.     /// LongCount - 返回集合中的元素个数,返回long;不延迟  

  195.     /// </summary>  

  196.     void Summary_Count_LongCount()  

  197.     {  

  198.         int i = (from a in _ary  

  199.                  select a).Count(p => p.Length > 10);  

  200.         // long i = (from a in _ary  

  201.         //           select a).LongCount(p => p.Length > 10);  

  202.   

  203.         result.InnerHtml += i.ToString() + "<br />";  

  204.         result.InnerHtml += "<br />";  

  205.     }运行结果  

  206. 2  

  207.   

  208. Sum - 集合应为数字类型集合,求其和;不延迟  

  209.     /**//// <summary>  

  210.     /// Sum - 集合应为数字类型集合,求其和;不延迟  

  211.     /// </summary>  

  212.     void Summary_Sum()  

  213.     {  

  214.         int i = (from a in _ary  

  215.                  select a.Length).Sum();  

  216.   

  217.         result.InnerHtml += i.ToString() + "<br />";  

  218.         result.InnerHtml += "<br />";  

  219.     }运行结果  

  220. 87  

  221.   

  222. Min - 返回集合的最小值;不延迟  

  223.     /**//// <summary>  

  224.     /// Min - 返回集合的最小值;不延迟  

  225.     /// </summary>  

  226.     void Summary_Min()  

  227.     {  

  228.         int i = (from a in _ary  

  229.                  select a.Length).Min();  

  230.   

  231.         result.InnerHtml += i.ToString() + "<br />";  

  232.         result.InnerHtml += "<br />";  

  233.     }运行结果  

  234. 2  

  235.   

  236. Max - 返回集合的最大值;不延迟  

  237.     /**//// <summary>  

  238.     /// Max - 返回集合的最大值;不延迟  

  239.     /// </summary>  

  240.     void Summary_Max()  

  241.     {  

  242.         int i = (from a in _ary  

  243.                  select a.Length).Max();  

  244.   

  245.         result.InnerHtml += i.ToString() + "<br />";  

  246.         result.InnerHtml += "<br />";  

  247.     }运行结果  

  248. 12  

  249.   

  250. Average - 集合应为数字类型集合,求其平均值;不延迟  

  251.     /**//// <summary>  

  252.     /// Average - 集合应为数字类型集合,求其平均值;不延迟  

  253.     /// </summary>  

  254.     void Summary_Average()  

  255.     {  

  256.         double d = (from a in _ary  

  257.                     select a.Length).Average();  

  258.   

  259.         result.InnerHtml += d.ToString() + "<br />";  

  260.         result.InnerHtml += "<br />";  

  261.     }运行结果  

  262. 5.8  

  263.   

  264. Aggregate - 根据输入的表达式获取一个聚合值;不延迟  

  265.     /**//// <summary>  

  266.     /// Aggregate - 根据输入的表达式获取一个聚合值;不延迟  

  267.     /// </summary>  

  268.     void Summary_Aggregate()  

  269.     {  

  270.         // 如下算法的Aggregate至关于Sum  

  271.         double d = (from a in _ary  

  272.                     select a.Length).Aggregate((x, y) => x + y);  

  273.   

  274.         result.InnerHtml += d.ToString() + "<br />";  

  275.         result.InnerHtml += "<br />";  

  276.     }运行结果  

  277. 87  

  278.   

  279. Cast - 将集合转换为强类型集合;延迟  

  280.     /**//// <summary>  

  281.     /// Cast - 将集合转换为强类型集合;延迟  

  282.     /// </summary>  

  283.     void Summary_Cast()  

  284.     {  

  285.         ArrayList al = new ArrayList();  

  286.         al.Add("asp.net");  

  287.         al.Add("csharp");  

  288.         al.Add("xhtml");  

  289.   

  290.         var list = al.Cast<string>();  

  291.   

  292.         foreach (string s in list)  

  293.         {  

  294.             result.InnerHtml += s + "<br />";  

  295.         }  

  296.         result.InnerHtml += "<br />";  

  297.     }运行结果  

  298. asp.net  

  299. csharp  

  300. xhtml  

  301.   

  302. DefaultIfEmpty - 查询结果为空则返回默认值;延迟  

  303.     /**//// <summary>  

  304.     /// DefaultIfEmpty - 查询结果为空则返回默认值;延迟  

  305.     /// </summary>  

  306.     void Summary_DefaultIfEmpty()  

  307.     {  

  308.         var list = (from a in _ary  

  309.                     where a.Length > 100  

  310.                     select a).DefaultIfEmpty("xxx");  

  311.   

  312.         foreach (string s in list)  

  313.         {  

  314.             result.InnerHtml += s + "<br />";  

  315.         }  

  316.         result.InnerHtml += "<br />";  

  317.     }运行结果  

  318. xxx  

  319.   

  320. SequenceEqual - 判断两个集合是否相同;不延迟  

  321.     /**//// <summary>  

  322.     /// SequenceEqual - 判断两个集合是否相同;不延迟  

  323.     /// </summary>  

  324.     void Summary_SequenceEqual()  

  325.     {  

  326.         bool b = (from a in _ary  

  327.                   where a.Length > 10  

  328.                   select a).SequenceEqual(from a in _ary  

  329.                                           where a.Length > 10  

  330.                                           select a);  

  331.   

  332.         result.InnerHtml += b.ToString() + "<br />";  

  333.         result.InnerHtml += "<br />";  

  334.     }运行结果  

  335. True  

  336.   

  337. OfType - 过滤集合中的指定类型;延迟  

  338.     /**//// <summary>  

  339.     /// OfType - 过滤集合中的指定类型;延迟  

  340.     /// </summary>  

  341.     void Summary_OfType()  

  342.     {  

  343.         object[] objects = { 1, "a", 2, "b", 3, "c" };  

  344.   

  345.         var list = objects.OfType<string>();  

  346.   

  347.         foreach (string s in list)  

  348.         {  

  349.             result.InnerHtml += s + "<br />";  

  350.         }  

  351.         result.InnerHtml += "<br />";  

  352.     }运行结果  

  353. a  

  354. b  

  355. c  

  356.   

  357. ToArray - 将集合转换为数组;不延迟  

  358.     /**//// <summary>  

  359.     /// ToArray - 将集合转换为数组;不延迟  

  360.     /// </summary>  

  361.     void Summary_ToArray()  

  362.     {  

  363.         string[] ary = (from p in _ctx.Products  

  364.                         where p.ProductName.Length > 30  

  365.                         select p.ProductName).ToArray();  

  366.   

  367.         foreach (string s in ary)  

  368.         {  

  369.             result.InnerHtml += s + "<br />";  

  370.         }  

  371.         result.InnerHtml += "<br />";  

  372.     }运行结果  

  373. Jack's New England Clam Chowder  

  374. Louisiana Fiery Hot Pepper Sauce  

  375. Original Frankfurter grüne So?e  

  376. Uncle Bob's Organic Dried Pears  

  377.   

  378. ToList - 将集合转换为List<T>集合;不延迟  

  379.     /**//// <summary>  

  380.     /// ToList - 将集合转换为List<T>集合;不延迟  

  381.     /// </summary>  

  382.     void Summary_ToList()  

  383.     {  

  384.         var list = (from a in _ary  

  385.                     where a.Length > 10  

  386.                     select a).ToList();  

  387.   

  388.         foreach (string s in list)  

  389.         {  

  390.             result.InnerHtml += s + "<br />";  

  391.         }  

  392.         result.InnerHtml += "<br />";  

  393.     }运行结果  

  394. silverlight  

  395. asp.net ajax  

  396.   

  397. ToDictionary - 将集合转换为<K, V>集合;不延迟  

  398.     /**//// <summary>  

  399.     /// ToDictionary - 将集合转换为<K, V>集合;不延迟  

  400.     /// </summary>  

  401.     void Summary_ToDictionary()  

  402.     {  

  403.         var dic = (from p in _ctx.Products  

  404.                    where p.ProductName.Length > 30  

  405.                    select p).ToDictionary(p => p.ProductID);  

  406.   

  407.         foreach (var p in dic)  

  408.         {  

  409.             result.InnerHtml += p.Key + ":" + p.Value.ProductName + "<br />";  

  410.         }  

  411.         result.InnerHtml += "<br />";  

  412.     }运行结果  

  413. 7:Uncle Bob's Organic Dried Pears  

  414. 41:Jack's New England Clam Chowder  

  415. 65:Louisiana Fiery Hot Pepper Sauce  

  416. 77:Original Frankfurter grüne So?e  

wKioL1YolkOjBHKcAAGfZLm3Ar4867.jpg