SORU
4 Mayıs 2010, Salı


C# Lınq ve Lambda ile Nerede/Birleşim

Bir sorgu Etmeniz ve Lambda yazılı ile ilgili sorun yaşıyorum. Şimdiye kadar, burada benim kod çok fazla hata alıyorum:

int id = 1;
var query = database.Posts.Join(database.Post_Metas,
                                post => database.Posts.Where(x => x.ID == id),
                                meta => database.Post_Metas.Where(x => x.Post_ID == id),
                                (post, meta) => new { Post = post, Meta = meta });

Seri kullanarak yeniyim, eğer bu sorgunun doğru olup olmadığından emin değilim.

CEVAP
4 Mayıs 2010, Salı


Eğer SQL sözdizimi aşina iseniz, SERİ sorgu sözdizimini kullanarak daha net, daha doğal olur ve daha kolay hataları görmenizi sağlar:

var id = 1;
var query =
   from post in database.Posts
   join meta in database.Post_Metas on post.ID equals meta.Post_ID
   where post.ID == id
   select new { Post = post, Meta = meta };

Eğer gerçekten de Lambda kullanarak sıkışmış iseniz, sözdizimi biraz kapalı. İşte aynı sorgu, SERİ uzatma yöntemleri kullanarak:

var id = 1;
var query = database.Posts    // your starting point - table in the "from" statement
   .Join(database.Post_Metas, // the source table of the inner join
      post => post.ID,        // Select the primary key (the first part of the "on" clause in an sql "join" statement)
      meta => meta.Post_ID,   // Select the foreign key (the second part of the "on" clause)
      (post, meta) => new { Post = post, Meta = meta }) // selection
   .Where(postAndMeta => postAndMeta.Post.ID == id);    // where statement

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Air_Fooj

    Air_Fooj

    24 NİSAN 2009
  • Rayone GB

    Rayone GB

    14 Temmuz 2007
  • Vortez

    Vortez

    27 Temmuz 2009