>  기사  >  백엔드 개발  >  LINQ to SQL 합치기/교차/제외

LINQ to SQL 합치기/교차/제외

黄舟
黄舟원래의
2017-02-20 11:17:351601검색

LINQ to SQL 문 Union/Intersect/Except

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BegVCSharp_23_15_SetOperators
{
    class Customer
    {
        public string ID { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
        public string Region { get; set; }
        public decimal Sales { get; set; }
    }
    class Order
    {
        public string ID { get; set; }
        public decimal Amount { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Order> orders = new List<Order> {
              new Order { ID="P", Amount=100 },
              new Order { ID="Q", Amount=200 },
              new Order { ID="R", Amount=300 },
              new Order { ID="S", Amount=400 },
              new Order { ID="T", Amount=500 },
              new Order { ID="U", Amount=600 },
              new Order { ID="V", Amount=700 },
              new Order { ID="W", Amount=800 },
              new Order { ID="X", Amount=900 },
              new Order { ID="Y", Amount=1000 },
              new Order { ID="Z", Amount=1100 }
            };
            List<Customer> customers = new List<Customer> {
              new Customer { ID="A", City="New York", Country="USA", Region="North America", Sales=9999},
              new Customer { ID="B", City="Mumbai", Country="India", Region="Asia", Sales=8888},
              new Customer { ID="C", City="Karachi", Country="Pakistan", Region="Asia", Sales=7777},
              new Customer { ID="D", City="Delhi", Country="India", Region="Asia", Sales=6666},
              new Customer { ID="E", City="São Paulo", Country="Brazil", Region="South America", Sales=5555 },
              new Customer { ID="F", City="Moscow", Country="Russia", Region="Europe", Sales=4444 },
              new Customer { ID="G", City="Seoul", Country="Korea", Region="Asia", Sales=3333 },
              new Customer { ID="H", City="Istanbul", Country="Turkey", Region="Asia", Sales=2222 },
              new Customer { ID="I", City="Shanghai", Country="China", Region="Asia", Sales=1111 },
              new Customer { ID="J", City="Lagos", Country="Nigeria", Region="Africa", Sales=1000 },
              new Customer { ID="K", City="Mexico City", Country="Mexico", Region="North America", Sales=2000 },
              new Customer { ID="L", City="Jakarta", Country="Indonesia", Region="Asia", Sales=3000 },
              new Customer { ID="M", City="Tokyo", Country="Japan", Region="Asia", Sales=4000 },
              new Customer { ID="N", City="Los Angeles", Country="USA", Region="North America", Sales=5000 },
              new Customer { ID="O", City="Cairo", Country="Egypt", Region="Africa", Sales=6000 },
              new Customer { ID="P", City="Tehran", Country="Iran", Region="Asia", Sales=7000 },
              new Customer { ID="Q", City="London", Country="UK", Region="Europe", Sales=8000 },
              new Customer { ID="R", City="Beijing", Country="China", Region="Asia", Sales=9000 },
              new Customer { ID="S", City="Bogotá", Country="Colombia", Region="South America", Sales=1001 },
              new Customer { ID="T", City="Lima", Country="Peru", Region="South America", Sales=2002 }
           };

            var customerIDs =
               from c in customers
               select c.ID
               ;
            var orderIDs =
               from o in orders
               select o.ID
               ;
            var customersWithOrders = customerIDs.Intersect(orderIDs);
            Console.WriteLine("Customers with Orders:");
            foreach (var item in customersWithOrders)
            {
                Console.Write("{0} ", item);
            }
            Console.WriteLine();

            Console.WriteLine("Orders with no customers:");
            var ordersNoCustomers = orderIDs.Except(customerIDs);
            foreach (var item in ordersNoCustomers)
            {
                Console.Write("{0} ", item);
            }
            Console.WriteLine();

            Console.WriteLine("All Customer and Order IDs:");
            var allCustomerOrderIDs = orderIDs.Union(customerIDs);
            foreach (var item in allCustomerOrderIDs)
            {
                Console.Write("{0} ", item);
            } 
            Console.WriteLine();

            Console.Write("Program finished, press Enter/Return to continue:");
            Console.ReadLine();
        }
    }

}

입력 결과:


참고:

Intersect
설명: 교차점 지연을 가져옵니다. 즉, 서로 다른 컬렉션에서 동일한 항목(교차점)을 가져오는 것입니다. 즉, 먼저 첫 번째 세트를 순회하여 모든 고유 요소를 찾은 다음 두 번째 세트를 순회하여 각 요소를 이전에 찾은 요소와 비교하고 두 세트에 나타나는 모든 요소를 ​​반환합니다.
제외(NAND)
설명: 교차하는 항목을 제외합니다. 즉, 다른 컬렉션의 항목과 동일한 항목을 한 컬렉션에서 삭제합니다. 먼저 첫 번째 세트를 순회하여 모든 고유 요소를 찾은 다음 두 번째 세트를 순회하여 이전에 얻은 요소 세트에 나타나지 않는 두 번째 세트의 모든 요소를 ​​반환합니다.
통합(병합)
설명: 서로 다른 컬렉션을 연결하고 동일한 항목을 자동으로 필터링합니다. 즉, 두 컬렉션이 병합되고 동일한 항목이 필터링됩니다.

위 내용은 LINQ to SQL 문의 Union/Intersect/Except 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.