Linq to Object łączenie kolekcji

0

Witam, jak w temacie nie wiem dlaczego po złączeniu dwóch kolekcji nie pokazuje mi żadnych danych.
Oto kod:

List<Person> oPersonsList = new List<Person>();
oPersonsList.Add(new Person(1, "Jan", "Kowalski", 31, 61423423));
oPersonsList.Add(new Person(2, "Adam", "Nowak", 28, 22126621));
oPersonsList.Add(new Person(3, "Anna", "Kowalczyk", 30, 22532765));
oPersonsList.Add(new Person(4, "Katarzyna", "Nowaczyk", 26, 62323545));
oPersonsList.Add(new Person(5, "Adam", "Nowakowski", 17, 38434213));

        List<Person> oPersonsList2 = new List<Person>();
        oPersonsList.Add(new Person(1, "J", "Kow", 31, 61423423));
        oPersonsList.Add(new Person(2, "A", "No", 28, 22126621));
        oPersonsList.Add(new Person(3, "An", "Kow", 30, 22532765));
        oPersonsList.Add(new Person(4, "Kat", "Now", 26, 62323545));
        oPersonsList.Add(new Person(5, "Ada", "Nowak", 17, 38434213));

var oPersonsWithTelephones = from Plist in oPersonsList
join Plist2 in oPersonsList2
on Plist.PersonId equals Plist2.PersonId
select new
{
P = Plist2.PersonId,
F = Plist2.FirstName,
T = Plist.LastName,
PL = Plist2.LastName,
PH = Plist.Phone
};

        foreach (var item in oPersonsWithTelephones)
        {
            
                Console.WriteLine(item.P + " " + item.F + " " + item.T + " " + item.PL + " " + item.PH); 
            
        }

Wydaje mi się że wszystko jest ok, ale jestem początkującym programistą więc może pomijam coś istotnego, proszę o pomoc

1

nie czaje dlaczego piszesz List<person> a potem dodajesz Person... mała i duża litera? poza tym dobrze było by zmienić tą drugą listę do której dodajesz...bo teraz dodajesz 2 razy do tej samej - pierwszej listy. Używaj debugera ;)

1

Błąd z cyklu kopiuj wklej.

List<person> oPersonsList = new List<person>();
            oPersonsList.Add(new Person(1, "Jan", "Kowalski", 31, 61423423));
            oPersonsList.Add(new Person(2, "Adam", "Nowak", 28, 22126621));
            oPersonsList.Add(new Person(3, "Anna", "Kowalczyk", 30, 22532765));
            oPersonsList.Add(new Person(4, "Katarzyna", "Nowaczyk", 26, 62323545));
            oPersonsList.Add(new Person(5, "Adam", "Nowakowski", 17, 38434213));


            List<person> oPersonsList2 = new List<person>();
// ZAMIAST oPersonsList miało być oPersonsList2 
            oPersonsList.Add(new Person(1, "J", "Kow", 31, 61423423));
// ZAMIAST oPersonsList miało być oPersonsList2 ITD..
            oPersonsList.Add(new Person(2, "A", "No", 28, 22126621));
            oPersonsList.Add(new Person(3, "An", "Kow", 30, 22532765));
            oPersonsList.Add(new Person(4, "Kat", "Now", 26, 62323545));
            oPersonsList.Add(new Person(5, "Ada", "Nowak", 17, 38434213));

Jedna lista jest pusta. Plus nie ścisłość odnośnie nazw jak @ne0 słusznie zauważył. :)

1
List<person> oPersonsList2 = new List<person>();
oPersonsList.Add(new Person(1, "J", "Kow", 31, 61423423));
oPersonsList.Add(new Person(2, "A", "No", 28, 22126621));
oPersonsList.Add(new Person(3, "An", "Kow", 30, 22532765));
oPersonsList.Add(new Person(4, "Kat", "Now", 26, 62323545));
oPersonsList.Add(new Person(5, "Ada", "Nowak", 17, 38434213));

oPersonsList2 jest puste bo dwa razy dodajesz do oPersonsList dlatego join nic nie zwraca

2

bo to się robi tak:

            List<Person> oPersonsList2 = new List<Person>
            {
                new Person(1, "J", "Kow", 31, 61423423),
                new Person(2, "A", "No", 28, 22126621),
                new Person(3, "An", "Kow", 30, 22532765),
                new Person(4, "Kat", "Now", 26, 62323545),
                new Person(5, "Ada", "Nowak", 17, 38434213)
            };
0

No tak, czeski błąd - dzięki Panowie

1 użytkowników online, w tym zalogowanych: 0, gości: 1