Tôi đang cố gắng chuyển đổi một số truy vấn SQL vào LINQ để tránh nhiều chuyến đi đến cơ sở dữ liệu.LINQ - tính nhiều điểm trung bình trong một truy vấn
SQL cũ Tôi đang cố gắng để chuyển đổi thực hiện:
SELECT
AVG(CAST(DATEDIFF(ms, A.CreatedDate, B.CompletedDate) AS decimal(15,4))),
AVG(CAST(DATEDIFF(ms, B.CreatedDate, B.CompletedDate) AS decimal(15,4)))
FROM
dbo.A
INNER JOIN
dbo.B ON B.ParentId = A.Id
Vì vậy, tôi đã tạo ra hai lớp C#:
class B
{
public Guid Id { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime CompletedDate { get; set; }
}
class A
{
public Guid Id { get; set; }
public DateTime CreatedDate { get; set; }
public List<B> BList { get; set; }
}
Và tôi đã có một đối tượng List<A>
mà tôi muốn truy vấn. Nó được điền từ cơ sở dữ liệu, do đó, mỗi A trong danh sách có một danh sách con với một tải của Bs. Tôi muốn sử dụng LINQ-to-objects để truy vấn danh sách này.
Vì vậy, tôi cần sử dụng LINQ để có được thời gian trung bình giữa điểm bắt đầu của A và hoàn thành các con của nó, và thời gian trung bình giữa mỗi lần bắt đầu và hoàn thành của mỗi B. Tôi đã không viết bản gốc SQL vì vậy tôi không hoàn toàn chắc chắn nó làm những gì nó nghĩa vụ phải!
Tôi có một số mức trung bình này để tính toán, vì vậy tôi muốn thực hiện tất cả chúng bên trong một truy vấn LINQ huyền diệu. Điều này có thể không?
Cảm ơn, công việc này hoàn hảo! Tôi đã đi với tùy chọn tổng hợp riêng biệt - điều này làm cho mọi thứ rõ ràng hơn một chút. –