Tôi có một lớp:Sử dụng LINQ to Get Sum/trung bình của một danh sách với các đối tượng tùy chỉnh
public class PointD
{
public double X
{ get; set; }
public double Y
{ get; set; }
public PointD(double x, double y)
{
X = x;
Y=y;
}
//operator for +,-, * and/are overridden
}
Cho một list<PointD>
, làm thế nào để có được tỷ lệ trung bình của nó sử dụng LINQ? Một for
vòng lặp tương đương sẽ là một cái gì đó như thế này:
double xx, yy;
for (int i=0; i< ptlist.Count; i++)
{
xx+=ptlist[i].X;
yy+=ptlist[i].Y;
}
return new PointD(){X=xx, Y=yy};
Bạn có thể sử dụng bất kỳ chỉ built-in chức năng LINQ. Bạn không thể xác định tiện ích mở rộng sẽ xử lý chức năng này.
Bất kỳ ý tưởng nào?
Chỉnh sửa: Tất nhiên, bạn có thể sử dụng hai phương thức mở rộng riêng biệt Sum
để tính tổng hợp cho thành phần X và Y trước khi hợp nhất chúng. Nhưng đây không phải là điều tôi muốn. Điều tôi muốn là một truy vấn/phương pháp thực hiện công việc
sẽ không có hai khoản tiền hoạt động? Một cái gì đó như ptlist.Sum (p => p.X); và ptlist.Sum (p => p.Y); – albertjan
"làm thế nào để có được mức trung bình của nó bằng cách sử dụng LINQ?" .. Tôi nghĩ rằng bạn có nghĩa là số tiền – James
@ the_ajp: nó có thể làm việc, nhưng tôi muốn đặt tất cả mọi thứ trong một truy vấn, đó chỉ là nó. – Graviton