У меня есть два объекта в C #. Одним из них является Box
. Другой - Ball
.
A Ball
должен принадлежать Box
. Это означает, что BoxId
на Ball
.
public class Box
{
public int Id { get; set; }
public IEnumerable<Ball> Balls { get; set; }
}
public class Ball
{
public int Id { get; set; }
public int BoxId { get; set; }
public Box Box { get; set; }
public string Color { get; set; }
public DateTime CreationTime { get; set; }
}
Теперь мне нужно взять несколько коробок, в которые вставлен последний шарик, потому что мне нужно знать его цвет.
Я пробовал так:
// Runs slow because there is too many balls.
var boxes = await Boxes
.Where(somecondition)
.Include(t => t.Balls)
.ToListAsync()
foreach (var box in boxes)
{
// Get the color which I only need.
box.Balls.OrderByDesending(t => t.CreationTime).First().Color;
}
Но при этом будут запрашиваться все шары в базе данных. Теперь есть много шаров (около 10 000 000), поэтому он запрашивает медленно.
Мне нужна только последняя вставленная коробка. Как я могу это сделать?