2012-04-23 34 views
60

Tôi cho rằng điều này sẽ khá tầm thường nhưng tôi không thể tìm ra cách thực hiện. Tôi có một số List<int> và tôi muốn tổng hợp một số các số.Tổng số lượng int trong Danh sách <int>

Giả sử danh sách của tôi là:

var list = new List<int>() 
{ 
    1, 2, 3, 4 
}; 

Làm thế nào tôi sẽ nhận được số tiền của 3 đối tượng đầu tiên? Kết quả là 6. Tôi đã thử sử dụng Enumerable.Range nhưng không thể làm cho nó hoạt động, không chắc đó có phải là cách tốt nhất để thực hiện nó hay không.

Nếu không thực hiện:

int sum = list[0] + list[1] + list[2]; 
+0

Cũng xin lưu ý rằng nếu bạn bao gồm System.Linq, bạn có thể sử dụng nhiều cơ sở khác với bộ sưu tập của mình: http://msdn.microsoft.com/en-us/library/system.linq.enumerable.aspx –

Trả lời

99

Bạn có thể thực hiện điều này bằng cách sử dụng Take & Sum:

var list = new List<int>() 
{ 
    1, 2, 3, 4 
}; 

// 1 + 2 + 3 
int sum = list.Take(3).Sum(); // Result: 6 

Nếu bạn muốn tổng hợp một loạt bắt đầu ở nơi khác, bạn có thể sử dụng Skip:

var list = new List<int>() 
{ 
    1, 2, 3, 4 
}; 

// 3 + 4 
int sum = list.Skip(2).Take(2).Sum(); // Result: 7 

Hoặc , Sắp xếp lại danh sách của bạn sử dụng OrderBy hoặc OrderByDescending và sau đó tổng hợp:

var list = new List<int>() 
{ 
    1, 2, 3, 4 
}; 

// 3 + 4 
int sum = list.OrderByDescending(x => x).Take(2).Sum(); // Result: 7 

Như bạn có thể thấy, có một số cách để thực hiện nhiệm vụ này (hoặc các nhiệm vụ liên quan). Xem tài liệu Take, Sum, Skip, OrderBy & OrderByDescending để biết thêm thông tin.

+1

Hoàn hảo, cảm ơn James. –

+2

giải pháp tuyệt vời:] – Somebody

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