关键词搜索

源码搜索 ×
×

LINQ to SQL语句 Union/Intersect/Except

发布2014-03-09浏览2130次

详情内容

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace BegVCSharp_23_15_SetOperators
  6. {
  7. class Customer
  8. {
  9. public string ID { get; set; }
  10. public string City { get; set; }
  11. public string Country { get; set; }
  12. public string Region { get; set; }
  13. public decimal Sales { get; set; }
  14. }
  15. class Order
  16. {
  17. public string ID { get; set; }
  18. public decimal Amount { get; set; }
  19. }
  20. class Program
  21. {
  22. static void Main(string[] args)
  23. {
  24. List<Order> orders = new List<Order> {
  25. new Order { ID="P", Amount=100 },
  26. new Order { ID="Q", Amount=200 },
  27. new Order { ID="R", Amount=300 },
  28. new Order { ID="S", Amount=400 },
  29. new Order { ID="T", Amount=500 },
  30. new Order { ID="U", Amount=600 },
  31. new Order { ID="V", Amount=700 },
  32. new Order { ID="W", Amount=800 },
  33. new Order { ID="X", Amount=900 },
  34. new Order { ID="Y", Amount=1000 },
  35. new Order { ID="Z", Amount=1100 }
  36. };
  37. List<Customer> customers = new List<Customer> {
  38. new Customer { ID="A", City="New York", Country="USA", Region="North America", Sales=9999},
  39. new Customer { ID="B", City="Mumbai", Country="India", Region="Asia", Sales=8888},
  40. new Customer { ID="C", City="Karachi", Country="Pakistan", Region="Asia", Sales=7777},
  41. new Customer { ID="D", City="Delhi", Country="India", Region="Asia", Sales=6666},
  42. new Customer { ID="E", City="São Paulo", Country="Brazil", Region="South America", Sales=5555 },
  43. new Customer { ID="F", City="Moscow", Country="Russia", Region="Europe", Sales=4444 },
  44. new Customer { ID="G", City="Seoul", Country="Korea", Region="Asia", Sales=3333 },
  45. new Customer { ID="H", City="Istanbul", Country="Turkey", Region="Asia", Sales=2222 },
  46. new Customer { ID="I", City="Shanghai", Country="China", Region="Asia", Sales=1111 },
  47. new Customer { ID="J", City="Lagos", Country="Nigeria", Region="Africa", Sales=1000 },
  48. new Customer { ID="K", City="Mexico City", Country="Mexico", Region="North America", Sales=2000 },
  49. new Customer { ID="L", City="Jakarta", Country="Indonesia", Region="Asia", Sales=3000 },
  50. new Customer { ID="M", City="Tokyo", Country="Japan", Region="Asia", Sales=4000 },
  51. new Customer { ID="N", City="Los Angeles", Country="USA", Region="North America", Sales=5000 },
  52. new Customer { ID="O", City="Cairo", Country="Egypt", Region="Africa", Sales=6000 },
  53. new Customer { ID="P", City="Tehran", Country="Iran", Region="Asia", Sales=7000 },
  54. new Customer { ID="Q", City="London", Country="UK", Region="Europe", Sales=8000 },
  55. new Customer { ID="R", City="Beijing", Country="China", Region="Asia", Sales=9000 },
  56. new Customer { ID="S", City="Bogotá", Country="Colombia", Region="South America", Sales=1001 },
  57. new Customer { ID="T", City="Lima", Country="Peru", Region="South America", Sales=2002 }
  58. };
  59. var customerIDs =
  60. from c in customers
  61. select c.ID
  62. ;
  63. var orderIDs =
  64. from o in orders
  65. select o.ID
  66. ;
  67. var customersWithOrders = customerIDs.Intersect(orderIDs);
  68. Console.WriteLine("Customers with Orders:");
  69. foreach (var item in customersWithOrders)
  70. {
  71. Console.Write("{0} ", item);
  72. }
  73. Console.WriteLine();
  74. Console.WriteLine("Orders with no customers:");
  75. var ordersNoCustomers = orderIDs.Except(customerIDs);
  76. foreach (var item in ordersNoCustomers)
  77. {
  78. Console.Write("{0} ", item);
  79. }
  80. Console.WriteLine();
  81. Console.WriteLine("All Customer and Order IDs:");
  82. var allCustomerOrderIDs = orderIDs.Union(customerIDs);
  83. foreach (var item in allCustomerOrderIDs)
  84. {
  85. Console.Write("{0} ", item);
  86. }
  87. Console.WriteLine();
  88. Console.Write("Program finished, press Enter/Return to continue:");
  89. Console.ReadLine();
  90. }
  91. }
  92. }

输入结果:


小注:

Intersect(相交)
        说明:取相交项;延迟。即是获取不同集合的相同项(交集)。即先遍历第一个集合,找出所有唯一的元素,然后遍历第二个集合,并将每个元素与前面找出的元素作对比,返回所有在两个集合内都出现的元素。
Except(与非)
        说明:排除相交项;延迟。即是从某集合中删除与另一个集合中相同的项。先遍历第一个集合,找出所有唯一的元素,然后再遍历第二个集合,返回第二个集合中所有未出现在前面所得元素集合中的元素。
Union(合并)
        说明:连接不同的集合,自动过滤相同项;延迟。即是将两个集合进行合并操作,过滤相同的项。

相关技术文章

最新源码

下载排行榜

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载