SORU
24 Mart 2013, Pazar


Varlıklar bu seri vs groupjoin katıl

Web arandı ama hala cant basit bir cevap bulmak. Birisi GroupJoin (basit İngilizce) lütfen açıklayabilir mi? Nasıl bir düzenli iç farklı Join? Yaygın olarak kullanılır? Sadece yöntem sözdizimi için mi? Ne sorgu sözdizimi hakkında? Bir c# kod örneği, güzel olurdu.

CEVAP
24 Mart 2013, Pazar


Davranış

Sana iki liste olduğunu varsayalım:

Id  Value
1   A
2   B
3   C

Id  ChildValue
1   a1
1   a2
1   a3
2   b1
2   b2

Sen ne zamanJoinbu iki sonucu olacak Id sahada listeler:

Value ChildValue
A     a1
A     a2
A     a3
B     b1
B     b2

Sen ne zamanGroupJoinbu iki sonucu olacak Id sahada listeler:

Value  ChildValues
A      [a1, a2, a3]
B      [b1, b2]
C      []

Join üst ve alt değerleri (Tablo) düz bir sonuç üretir.
GroupJoin listedeki ilk giriş listesi, ikinci liste katıldı girişleri bir grup her üretiyor.

Join SQL INNER JOIN eşdeğerdir yüzden: C için girişleri vardır. GroupJoin eşdeğer OUTER JOIN: C sonuç kümesinde, ama boş bir liste ile ilgili girdileri (bir SQL sonuç seti olur satır C - null).

Bu sözdizimi içine bakarak doğrudan her zaman biraz kafa karıştırıcı, çünkü küresel bir şekilde farklılıkları işaret, bir yol oldu. Ama şimdi sözdizimi ayrıntılar için hazırız.

Sözdizimi

Böylece iki liste IEnumerable<Parent> IEnumerable<Child> sırasıyla olalım. (Varlıklara Etmeniz halinde: IQueryable<T>).

Joinsözdizimi olacaktır

from p in Parent
join c in Child on p.Id equals c.Id
select new { p.Value, c.ChildValue }

X nerede IEnumerable<X> dönen iki özelliği, Value ChildValue ile anonim bir türüdür. Bu kapsamlı sözdizimi başlık altında Join yöntemi kullanır.

GroupJoinsözdizimi olacaktır

from p in Parent
join c in Child on p.Id equals c.Id into g
select new { Parent = p, Children = g }

Y anonim tip 35 ** yazın ve bir özellik bir özellik ibaret olduğu IEnumerable<Y> dönen 36**. Bu kapsamlı sözdizimi başlık altında GroupJoin yöntemi kullanır.

Sadece listeleri ** 39, söyle bir liste seçin ki ikinci sorgu, select g yapabiliriz. Birçok durumda, üst dahil seçmek daha yararlıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Distractify

    Distractify

    1 Aralık 2011
  • SHAYTARDS

    SHAYTARDS

    1 EKİM 2008
  • tinycammonitor

    tinycammonit

    14 Aralık 2010