GRY-Online.pl --> Archiwum Forum

LINQ - co i jak?

16.03.2008
11:05
smile
[1]

Telemach [ Pretorianin ]

LINQ - co i jak?

Czy mógłby mi ktoś powiedzieć, co różni LINQ od standardowego dostępu do SQLa?
Wiem, że definiujemy klasę i następnie w elegancki i łatwy sposób "dobieramy" się do interesujących nas danych.

Tylko co oprócz tego? W czym drzemie potęga LINQ? W szybkości?


I teraz mój problem. Otóż dopiero trenuję w LINQ i proste zapytanie wykonują się bez problemu. Niestety mam problem z przeróbką tego:

[Kod SQL]

SELECT
dbo.wydarzenia.wydarzenie_tytul,
dbo.wydarzenia.wydarzenie_data,
dbo.wydarzenia.wydarzenie_id,
SUM(dbo.wydarzenia_glosy.wyd_glos_wartosc) AS Total,
COUNT(dbo.wydarzenia_glosy.wyd_glos_id) AS Votes,
dbo.wydarzenia.wydarzenie_miniatura
FROM dbo.wydarzenia INNER JOIN
dbo.wydarzenia_glosy ON dbo.wydarzenia.wydarzenie_id = dbo.wydarzenia_glosy.wydarzenie_id

GROUP BY dbo.wydarzenia.wydarzenie_tytul, dbo.wydarzenia.wydarzenie_data, dbo.wydarzenia.wydarzenie_id, dbo.wydarzenia.wydarzenie_miniatura
ORDER BY SUM(dbo.wydarzenia_glosy.wyd_glos_wartosc) / COUNT(dbo.wydarzenia_glosy.wyd_glos_id) DESC


Mógłby mi ktoś pomóc?

16.03.2008
11:26
[2]

Telemach [ Pretorianin ]

^

16.03.2008
13:06
[3]

legrooch [ MPO Squad Member ]

LINQ umożliwia zunifikowany dostęp do zarówno kolekcji, obiektów jak i baz danych. Dzięki temu nie trzeba znać mechanizmów różnych providerów/namespaców oraz używać Ifów/Forów do otrzymania rezultatu (szybsze działanie po stronie serwera).

16.03.2008
14:52
[4]

Telemach [ Pretorianin ]

Rozumiem mniej więcej :)

Doszedłem póki co do tego:

Dim warto = From w In db.wydarzenia_glosies, g In db.wydarzenias _
Where w.wydarzenie_id = g.wydarzenie_id _
Group w By w.wydarzenie_id Into Group Select _
wydarzenie_id, _
sumsal = Group.Sum(Function(w) w.wyd_glos_wartosc), _
total = Group.Count(Function(w) w.wyd_glos_id) _
Order By sumsal / total Descending

I zwraca mi sumę i ilość głosów na wydarzenie_id. Tylko teraz chciałbym jeszcze uzyskać wydarzenie_tytul z wydarzenias i nie wiem jak to wszystko w tym LINQ skonstruować.

16.03.2008
18:00
[5]

Telemach [ Pretorianin ]

^

16.03.2008
19:36
[6]

Lukxxx [ Generaďż˝ ]

jeśli chodzi o LINQ to SQL to poczytaj coś o ORM-ach:

17.03.2008
00:25
smile
[7]

legrooch [ MPO Squad Member ]

Telemach ==> Stwórz to najpierw w TSQL :)

17.03.2008
17:15
[8]

Telemach [ Pretorianin ]

Doszedłem do tego w końcu:

From wyd In db.wydarzenia_glosies _
Join tyt In db.wydarzenias On wyd.wydarzenie_id Equals tyt.wydarzenie_id _
Group By tyt.wydarzenie_tytul, tyt.wydarzenie_id, tyt.wydarzenie_miniatura, tyt.wydarzenie_data _
Into Rate = Sum(wyd.wyd_glos_wartosc), Votes = Count() _
Order By Rate / Votes Descending


@legrooch
Powiedz mi czy dobrze rozumiem. Tam, gdzie można należy stosować LINQ, ale przy bardziej złożonych zapytaniach lepiej pozostać przy zwykłym odpytywaniu?

17.03.2008
17:36
[9]

legrooch [ MPO Squad Member ]

Telemach ==> Odkąd zacząłem bawić się LINQ nie chce mi się używać innych metod :)
Na ogół z poziomu aplikacji i tak wybierasz, co chcesz. Tu masz lepszą i prostszą komunikację ze źródłem danych :)

Wyobraź sobie czytanie pliku i poszukiwanie konkretnych linii :)

© 2000-2026 GRY-OnLine S.A.