Heim  >  Artikel  >  Backend-Entwicklung  >  LINQ to SQL enthält Union/Intersect/Except

LINQ to SQL enthält Union/Intersect/Except

黄舟
黄舟Original
2017-02-20 11:17:351601Durchsuche

LINQ to SQL-Anweisung 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();
        }
    }

}

Eingabeergebnis:


Kleiner Hinweis :

Intersect
Beschreibung: Holen Sie sich die Kreuzungsverzögerung. Das heißt, dieselben Elemente (Schnittmenge) aus verschiedenen Sammlungen zu erhalten. Das heißt, durchqueren Sie zuerst die erste Menge, um alle eindeutigen Elemente zu finden, und durchqueren Sie dann die zweite Menge, vergleichen Sie jedes Element mit dem zuvor gefundenen Element und geben Sie alle Elemente zurück, die in beiden Mengen vorkommen.
Außer (NAND)
Beschreibung: Überschneidende Elemente ausschließen; Löschen Sie also Elemente aus einer Sammlung, die mit denen in einer anderen Sammlung identisch sind. Durchlaufen Sie zunächst den ersten Satz, um alle eindeutigen Elemente zu finden, durchlaufen Sie dann den zweiten Satz und geben Sie alle Elemente im zweiten Satz zurück, die nicht im zuvor erhaltenen Elementsatz enthalten sind.
Vereinigung (zusammenführen)
Beschreibung: Verschiedene Sammlungen verbinden, automatisch dieselben Elemente filtern; Das heißt, die beiden Sammlungen werden zusammengeführt und identische Elemente werden gefiltert.

Das Obige ist der Inhalt der LINQ to SQL-Anweisung Union/Intersect/Except. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn