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

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

.NET 3.5(5) - LINQ查询操作符之Select、Where、OrderBy、OrderByDescending

.NET 3.5(5) - LINQ查询操作符之Select.Where.OrderBy.OrderByDescending 介绍    ·Select - Select选择:延迟    ·Where - Where查询:延迟    ·OrderBy - 按指定表达式对集合正序排序:延迟    ·OrderByDescending - 按指定表达式对集合倒序排序:延迟    ·GroupBy - 分组:延迟    ·Join - Join查询:延迟    ·GroupJoin - 分组Join查

LINQ查询操作符

一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataContext db=new NorthwindDataContext()) { //查询语法 var query = from e in db.Employees where e.FirstName.StartsWith("M") select e; //方法语法 var q = db.Em

LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法

介绍    ·Select - Select选择:延迟    ·Where - Where查询:延迟    ·OrderBy - 按指定表达式对集合正序排序:延迟    ·OrderByDescending - 按指定表达式对集合倒序排序:延迟    ·GroupBy - 分组:延迟    ·Join - Join查询:延迟    ·GroupJoin - 分组Join查询:延迟    ·以上查询操作符所对应的查询语法 示例Summary.aspx.cs using System; using

LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count 等

介绍 ·First - 返回集合中的第一个元素:不延迟 ·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值):不延迟 ·Last - 返回集合中的最后一个元素:不延迟 ·LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值) ·ElementAt - 返回集合中指定索引的元素:不延迟 ·ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值):不延迟 ·Contains - 判断集合中是否包含有某一元素:不

(转)LINQ查询操作符之Distinct、Union、Concat、Intersect、Except

介绍 ·Distinct - 过滤集合中的相同项:延迟 ·Union - 连接不同集合,自动过滤相同项:延迟 ·Concat - 连接不同集合,不会自动过滤相同项:延迟 ·Intersect - 获取不同集合的相同项(交集):延迟 ·Except - 从某集合中删除其与另一个集合中相同的项:延迟 ·Skip - 跳过集合的前n个元素:延迟 ·Take - 获取集合的前n个元素:延迟 ·SkipWhile - 直到某一条件成立就停止跳过:延迟 ·TakeWhile - 直到某一条件成立就停止获取:

C#编程(六十二)---------LINQ标准的查询操作符

LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作"类型"进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. 类型 操作符名称 投影操作符 Select,SelectMany 限制操作符 Where 排序操作符 OrderBy,OrderByDescending,ThenBy,ThenByDescending,Reverse 联接操作符 Join,GroupJoin 分组操作符 GroupBy 串

C#高级编程六十二天----LINQ标准的查询操作符

LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作"类型"进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. 类型 操作符名称 投影操作符 Select,SelectMany 限制操作符 Where 排序操作符 OrderBy,OrderByDescending,ThenBy,ThenByDescending,Reverse 联接操作符 Join,GroupJoin 分组操作符 GroupBy 串

LINQ标准查询操作符详解(转)

 一. 关于LINQ       LINQ 英文全称是“Language-Integrated Query”,中文为“语言集成查询”,它是微软首席架构师.Delphi 之父和C# 之父——Anders Hejlsberg 提出的并由其团队着力打造的一组用于c#和Visual Basic语言的扩展,为 C# 和 Visual Basic 语言语法提供强大的查询功能.微软从2003年开始启动LINQ的开发,在VisualStudio2008中开始加入LINQ功能. LINQ提供的便利: 1)使用一种

Linq 标准查询操作符三

本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能. 一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataContext db = new NorthwindDataContext()) { //查