2012-02-01 32 views
9

Tôi có danh sách có 4 hàng. Tôi cần nhận giá trị của hàng thứ 3.Bỏ qua LINQ, hãy

var result = (from rs in list 
        select rs).Skip(2).First(); 

Có lý do tại sao tôi muốn sử dụng Take (1) trong scenerio này như tôi đã thấy đã sử dụng.

 var result = (from rs in list 
        select rs).Skip(2).Take(1); 
+11

Không bao giờ có bất kỳ điểm nào bằng văn bản 'từ x trong y chọn x'. – SLaks

+2

sử dụng danh sách trực tiếp.Skip (2) .Take (1) –

+4

'list.ElementAt (2)' là tất cả những gì bạn cần, nếu bạn biết chỉ mục của mục bạn đang tìm kiếm. – Naikrovek

Trả lời

18

Take(1) trả về một IEnumerable<T> chứa một đối tượng.
First() trả về đối tượng trực tiếp.

+12

Điều này thực sự sai - 'Take (1)' có thể trả về một đối tượng chứa số không nếu liệt kê nguồn trống. – BrokenGlass

0

Không, trừ khi bạn muốn để Nhận Nhiều mặt hàng bỏ qua hai mục đầu tiên

//Example: 
var result = (from rs in list 
         select rs).Skip(2).Take(5); //Returns 5 items 
5

Trong bối cảnh của câu hỏi Take(1) được trả lại một IEnumerable<T>mà sẽ chứa số không hay một yếu tố - vì vậy nó cũng tương tự như FirstOrDefault() (ngoài trả lại một điều tra).

Vì vậy, để trả lời câu hỏi của bạn: không. Sử dụng First() hoặc FirstOrDefault() trong trường hợp này tùy thuộc vào kỳ vọng của bạn về những gì có trong tập hợp kết quả.