У меня есть несколько клиентов, которые входят в группу, обозначенную идентификатором группы.
Я хотел бы получить 1 запись из связанной таблицы для каждого из подходящих членов группы (последняя запись до определенной даты).
В настоящее время я запрашиваю список членов группы, затем для каждого участника я запускаю другой запрос, чтобы получить последнюю запись за определенную дату.
Я хотел бы сделать это с одним запросом, так как я могу получить связанные записи таблицы, используя идентификатор группы - однако это возвращает все записи, связанные с группой (плохо).
Если я использую first
или default
, я получаю результаты только для первой найденной группы.
Я хочу 1 запись от каждого члена группы.
Мой код (возвращает все связанные записи членов группы):
List<Record> rs = (from x in db.Records where (x.Customer.Group == udcg && x.CloseDate < date && x.CloseDate < earlyDate) orderby x.CloseDate descending select x).ToList();
Но я просто хочу по одному от каждого вместо все .
Код, который я сейчас использую:
var custs = (from x in db.Customers where (x.group == udcg) select new { x.CustomerID }).ToList();
expected = custs.Count();
foreach (var cust in custs)
{
Record br = (from x in db.Records where (x.Customer.CustomerID == cust.CustomerID && x.CloseDate < date && x.CloseDate < earlyDate)) orderby x.CloseDate descending select x).FirstOrDefault();
if (br != null)
{
total = (double)br.BillTotal;
cnt++;
}
}