Aracılığıyla paylaş


Nasıl yapılır: Sol Dış Birleştirmeler Gerçekleştirme (C# Programlama Kılavuzu)

Bir birleşim sol dış birleşim ise de, ilk koleksiyonun her öğesine, onu ilişkili herhangi bir öğe ikinci koleksiyonunda olup bağımsız olarak döndürülür.Kullanabileceğiniz LINQ çağırarak bir sol dış birleşim gerçekleştirmek için DefaultIfEmpty``1 Grup birleştirme sonuçlarını yöntemi.

Örnek

Aşağıdaki örnek, nasıl kullanılacağını göstermektedir DefaultIfEmpty``1 yöntemi sonuçlarına birleştirmenin sol dış birleştirme gerçekleştirmek için bir grup.

Grubun birleştirme kullanarak bir iç birleşim gerçekleştirmek için bir sol dış birleşim iki koleksiyon oluşturmanın ilk adımı olur.(Bkz: Nasıl yapılır: İç Birleştirmeler Gerçekleştirme (C# Programlama Kılavuzu) bu işlem hakkında bilgi için.) Bu örnekte, liste, Person nesneleri listesine iç katılmış Pet nesneleri temel alan bir Person eşleşen nesne Pet.Owner.

İkinci adım o öğeye sağ koleksiyonda eşleşme olsa bile, sonuç kümesindeki ilk (soldaki) koleksiyonun her öğesine eklemektir.Bu arama yoluyla yapılır DefaultIfEmpty``1 Grup Katıl öğelerden eşleşen her sıra üzerinde.Bu örnekte, DefaultIfEmpty``1 eşleşen her sıra adı verilen Pet nesneler.Yöntemi, tek bir varsayılan değer içeren bir gruplandırma döndürür eşleşen sıralı Pet nesneleri için herhangi bir boş Person böylece sağlayarak, her nesne, Person sonucu koleksiyon nesnesinin temsil.

[!NOT]

Bir başvuru türü için varsayılan değer null; Bu nedenle, her her öğeye erişmeden önce örnek bir null başvuru denetler Pet koleksiyonu.

class Person
        {
            public string FirstName { get; set; }
            public string LastName { get; set; }
        }

        class Pet
        {
            public string Name { get; set; }
            public Person Owner { get; set; }
        }

        public static void LeftOuterJoinExample()
        {
            Person magnus = new Person { FirstName = "Magnus", LastName = "Hedlund" };
            Person terry = new Person { FirstName = "Terry", LastName = "Adams" };
            Person charlotte = new Person { FirstName = "Charlotte", LastName = "Weiss" };
            Person arlene = new Person { FirstName = "Arlene", LastName = "Huff" };

            Pet barley = new Pet { Name = "Barley", Owner = terry };
            Pet boots = new Pet { Name = "Boots", Owner = terry };
            Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
            Pet bluemoon = new Pet { Name = "Blue Moon", Owner = terry };
            Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

            // Create two lists.
            List<Person> people = new List<Person> { magnus, terry, charlotte, arlene };
            List<Pet> pets = new List<Pet> { barley, boots, whiskers, bluemoon, daisy };

            var query = from person in people
                        join pet in pets on person equals pet.Owner into gj
                        from subpet in gj.DefaultIfEmpty()
                        select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) };

            foreach (var v in query)
            {
                Console.WriteLine("{0,-15}{1}", v.FirstName + ":", v.PetName);
            }
        }

        // This code produces the following output: 
        // 
        // Magnus:         Daisy 
        // Terry:          Barley 
        // Terry:          Boots 
        // Terry:          Blue Moon 
        // Charlotte:      Whiskers 
        // Arlene:

Kod Derleniyor

  • Yeni bir konsol uygulaması proje oluşturmak Visual Studio.

  • Zaten başvurulmayan, System.Core.dll bir başvuru ekleyin.

  • Dahil System.Linq ad alanı.

  • Kopyalayıp örnek koddan program.cs dosyasına aşağıdaki Main yönteminde Program sınıf.Bir kod satırını ekleyin Main yöntemini çağırmak için LeftOuterJoinExample yöntem.

  • Programı çalıştırın.

Ayrıca bkz.

Görevler

Nasıl yapılır: İç Birleştirmeler Gerçekleştirme (C# Programlama Kılavuzu)

Nasıl yapılır: Gruplandırılmış Birleştirmeler Gerçekleştirme (C# Programlama Kılavuzu)

Başvuru

Join

GroupJoin

Anonim Türler (C# Programlama Kılavuzu)

Kavramlar

Birleştirme İşlemleri

Anonim Türleri (Visual Basic)