Tôi có một TimePoint struct tương tự như một điểm ngoại trừ giá trị x là datetime, một bộ sưu tập quan sát các timepoint và phương pháp này datetime và trả về một giá trị kép.LINQ - C# - Sử dụng lambda - Lấy một tập hợp dữ liệu từ Bộ sưu tập
Tôi muốn truy xuất giá trị tối đa và tối thiểu của số đôi được trả về từ số liệu thống kê trong bộ sưu tập này.
Tôi mới tham gia LINQ và không thể tìm ra truy vấn tôi sẽ phải chuyển sang bộ sưu tập quan sát để đạt được điều này.
Dưới đây là những gì tôi đang cố gắng để có được:
double minDouble = 0;
double maxDouble = 0;
foreach(TimePoint item in obsColl)
{
var doubleVal = ConvertToDouble(item.X); //Here x is a datetime
if(minDouble > doubleVal)
minDouble = doubleVal;
if(maxDouble < doubleVal)
maxDouble = doubleVal;
}
Làm thế nào tôi có thể đạt được điều này bằng cách dùng LINQ? Hay LINQ không lý tưởng cho việc này?
này sẽ gây ra một lặp nội bộ về toàn bộ bộ sưu tập? Những gì tôi có nghĩa là nếu tôi chạy Min một lần và tối đa một lần, nó là một hiệu suất O (n) hai lần? – Harsha
@Harsha vâng, đó là sự hiểu biết của tôi - nó sẽ lặp lại toàn bộ bộ sưu tập (mặc dù tất cả những gì tôi biết có thể có một số loại tối ưu được tích hợp sẵn). Các phương thức Linq như 'Max' và' Min' là các phương thức mở rộng của 'IEnumerable', do đó, ở phần lõi của chúng, bạn có thể giả sử chúng đơn giản thực hiện một phép lặp. – McGarnagle