2010-10-12 65 views
13

Tôi cần thảo luận về Hiệu suất của LINQ và Biểu thức Lambda.So sánh: LINQ vs LAMBDA Expression

Cái nào tốt hơn?

+4

Bạn có thể muốn xem đây http://stackoverflow.com/ câu hỏi/1182922/what-is-the-hiệu quả-và-hiệu suất-of-linq-và-lambda-expression-in-net –

Trả lời

34

Tôi đoán bạn có nghĩa là query expression khi nói về LINQ tại đây.

Chúng tương đương nhau. Trình biên dịch thay đổi query expression thành biểu thức Lambda tương đương trước khi biên dịch nó, do đó IL được tạo ra giống hệt nhau.

Ví dụ

var result = select s from intarray 
      where s < 5 
      select s + 1; 

là chính xác giống như

var result = intarray.Where(s => s < 5).Select(s => s+1); 

Lưu ý rằng nếu bạn viết các biểu thức truy vấn như thế này:

var result = select s from intarray 
      where s < 5 
      select s; 

Nó chuyển đổi sang:

var result = intarray.Where(s => s < 5); 

Cuộc gọi cuối cùng tới Chọn được bỏ qua vì nó không cần thiết.

+3

Tôi đã có thể nghĩ như vậy, nhưng, theo trang web này (http: // blog. thijssen.ch/2009/02/linq-vs-lambda-vs-loop-performance-test.html), các biểu thức Lambda hoạt động nhanh hơn. Tôi đã sao chép chức năng Kiểm tra vào một ứng dụng, để kiểm tra nó, và nó đã xác minh các phát hiện trên trang đó. –

+1

Điều này có nghĩa là chỉ học các biểu thức Lambda? –

+1

'truy vấn biểu hiện' là dễ đọc hơn đặc biệt là cho ppl mới – om471987

4

so sánh nhanh trong phản xạ có thể sẽ thực hiện thủ thuật. Tuy nhiên, từ quan điểm 'sở thích', tôi tìm thấy các câu lệnh lambda dễ dàng hơn để theo dõi và viết và sử dụng chúng trên bảng cho dù đó là với các đối tượng, xml hay bất cứ thứ gì.

Nếu hiệu suất không đáng kể, tôi sẽ sử dụng hiệu suất phù hợp nhất với bạn.

tôi thực sự bắt đầu một chủ đề ít nhìn vào phương pháp LINQ mà có thể quan tâm:

What's your favourite linq method or 'trick'

cổ vũ ..

Các vấn đề liên quan