2011-11-26 35 views
19

Tôi có một số List<int> và cần tính số lượng phần tử (giá trị < 5) - làm cách nào để thực hiện việc này?Đếm các phần tử có int <5 trong Danh sách <T>

+0

Yeesh! Ai đó đã dành một loạt thời gian để downvoting 4 câu trả lời dưới đây. –

+0

@ p.campbell - Ừ, bất cứ ai, người ta đã phạm tội với 'Where'. – Oded

+4

có thể trùng lặp của [Nhận số mục của danh sách <> bằng Linq] (http://stackoverflow.com/questions/3853010/get-item-count-of-a-list-using-linq) –

Trả lời

55

Count() có tình trạng quá tải chấp nhận Predicate<T>:

int count = list.Count(x => x < 5); 

Xem MSDN

5
List<int> list = ... 
int count = list.Where(x => x < 5).Count(); 
3

Something như thế này:

var count = myList.Where(x => x < 5).Count(); 
1

Hãy thử điều này:

int c = myList.Where(x=>x<5).Count(); 
16

Các tùy chọn ngắn nhất:

myList.Count(v => v < 5); 

Điều này cũng sẽ làm:

myList.Where(v => v < 5).Count(); 
+0

+1 Tôi thực sự thực sự thích phương pháp sau ở đây vì chúng có hiệu suất tương đương khá khôn ngoan và tôi nghĩ nó rõ ràng hơn một chút về những gì đang xảy ra ở đây. – ForbesLindesay

35

Không giống như câu trả lời khác, điều này làm nó trong một cuộc gọi phương pháp sử dụng quá tải này của countextension method:

using System.Linq; 

... 

var count = list.Count(x => x < 5); 

Lưu ý rằng kể từ khi phương pháp khuyến nông LINQ được định nghĩa trong namespace System.Linq bạn có thể cần thêm một tuyên bố sử dụng và tham chiếu đến System.Core nếu nó chưa có ở đó (cần phải có).


Xem thêm: Extension methods defined by the Enumerable class.

+1

+1 chỉ một không có mệnh đề không liên quan ở đâu. –

+2

+1 vì bạn đã sớm hơn một phút so với câu trả lời được chấp nhận của abatischchev;) – Abel

+0

@Daniel: Chỉ một, vâng :)) – abatishchev

5

Thử -

var test = new List<int>(); 
test.Add(1); 
test.Add(6); 
var result = test.Count(i => i < 5); 
7
int count = list.Count(i => i < 5); 
3
list.Where(x => x < 5).Count() 
2
int c = 0; 
for (i = 0; i > list.Count; i++) 
{ 
    // The "for" is check all elements that in list. 
    if (list[i] < 5) 
    { 
     c = c + 1; // If the element is smaller than 5 
    } 
} 
+0

+1 Là câu trả lời duy nhất không sử dụng LINQ. Mặc dù tôi muốn sử dụng "foreach" thay vì "for". Thậm chí tốt hơn sẽ là một phương pháp tổng quát có một biến vị ngữ như là tham số và sau đó có thể được gọi bằng cách sử dụng ký pháp lambda. – RenniePet

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