none
(Sumber: milist DOTNET) Sintak LINQ dan Lambda Expression RRS feed

  • Pertanyaan

  • temen2,

     

    1. var produk = from p in db.Product select p;

     

    2. var produk = db.Produk.ToList();

     

    sesuai subject diatas, yg sy mau tanyakan apakah ada perbedaan dlm hal kecepatan

    antara menggunakan sintak LINQ dgn cara no 1 dan no 2

     

    krn "kata orang" sintak lambda lbh powerfull dibandingkan menggunakan sintak pada no 1

    itu kata orang ya, kalo kata komunitas ini bagaimana ? ditunggu tanggapannya

     


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Rabu, 16 November 2011 06.43
    Moderator

Jawaban

  • Sama, (ini saya asumsiin pake EF 4.0 ya).

     

    Kalo pertanyaan selanjutnya: kenapa sama?

    Semua tipe LINQ query itu (query syntax ataupun method syntax (lambda kalo pake istilahnya mbak Vera)) itu nanti di-translate ke LINQ query expression (http://msdn.microsoft.com/en-us/library/bb397676.aspx) oleh C# compiler. Ujung2nya, MSIL yang di-create oleh C# compiler ya juga sama. Lha kalo MSIL-nya sama, ya pasti sama performa-nya :D

     

    Tambahan masih dari link yang sama di atas: 

    "As a rule when you write LINQ queries, we recommend that you use query syntax whenever possible and method syntax whenever necessary. There is no semantic or performance difference between the two different forms. Query expressions are often more readable than equivalent expressions written in method syntax."

    CMIIW.

     

    Dijawab oleh: Raditya


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Rabu, 16 November 2011 06.47
    Moderator

Semua Balasan

  • Jawabannya: Sama. Sebab dua2nya sudah berbentuk ToList(), jadi data yang di Fetch (IQueryable/IEnumerable) sudah ditarik ke memori semua.

     

    Mungkin maksudnya karena sudah menjadi List<T>. Sebetulnya kecepatannya sama Cuma cara pertama data tersebut masih berbentuk Fetch. Jadi sama modelnya seperti di SqlDataReader, selama SqlDataReader.Read() masih ada, maka datanya bisa diambil. Sedangkan cara kedua adalah sudah ditarik semua ke memori komputer. Jadi lebih cepat. Kalau anda ingin hasil yang sama lakukan cara seperti ini,

     

    1.  var produk = (from p in db.Product select p).ToList();

    2.  var produk = db.Produk.ToList();

     

    Dijamin hasil kecepatannya akan sama. Mudah2an bisa membantu.

     

    Dijawab oleh: Riza Marhaban


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Rabu, 16 November 2011 06.46
    Moderator
  • Sama, (ini saya asumsiin pake EF 4.0 ya).

     

    Kalo pertanyaan selanjutnya: kenapa sama?

    Semua tipe LINQ query itu (query syntax ataupun method syntax (lambda kalo pake istilahnya mbak Vera)) itu nanti di-translate ke LINQ query expression (http://msdn.microsoft.com/en-us/library/bb397676.aspx) oleh C# compiler. Ujung2nya, MSIL yang di-create oleh C# compiler ya juga sama. Lha kalo MSIL-nya sama, ya pasti sama performa-nya :D

     

    Tambahan masih dari link yang sama di atas: 

    "As a rule when you write LINQ queries, we recommend that you use query syntax whenever possible and method syntax whenever necessary. There is no semantic or performance difference between the two different forms. Query expressions are often more readable than equivalent expressions written in method syntax."

    CMIIW.

     

    Dijawab oleh: Raditya


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Rabu, 16 November 2011 06.47
    Moderator