У меня есть база данных с заказами клиентов.Я хочу использовать Linq (для EF), чтобы запросить базу данных, чтобы вернуть последние (самые последние) 3,4 ... n заказов для каждого клиента.
Примечание: Клиент 1, возможно, только что сделал 12 заказовв последний час;но клиент 2, возможно, не сделал ничего с прошлой недели.
Я не могу на всю жизнь понять, как написать запрос в linq (лямбда-выражения), чтобы вернуть набор данных.
Есть хорошие идеи?
Редактировать: Заказчики и заказы - это упрощение.Таблица, которую я запрашиваю, на самом деле является записью исходящих сообщений для различных веб-сервисов.Просто казалось, что проще описать как клиентов, так и заказы.Отношения такие же.Я строю задачу, которая проверяет последние n сообщений для каждого веб-сервиса, чтобы увидеть, были ли какие-либо сбои.Мы хотим получить статус работоспособности веб-сервисов в реальном времени.
@ CoreySunwold
Моя таблица выглядит примерно так:
MessageID, WebserviceID, SentTime, Status, Message, Error,
Или из контекста клиента / заказа, если это делает его более легким:
OrderID, CustomerID, StatusChangedDate, Status, WidgetName, Комментарии
Edit 2: В конце концов я кое-что разработал
(Шляпа для @StephenChung, который в основном придумал то же самое, но в классическом linq)
var q = myTable.Where(d => d.EndTime > DateTime.Now.AddDays(-1))<br>
.GroupBy(g => g.ConfigID)<br>
.Select(g =>new
{
ConfigID = g.Key,
Data = g.OrderByDescending(d => d.EndTime)
.Take(3).Select(s => new
{
s.Status,
s.SentTime
})
}).ToList();
Это займет некоторое время, чтобы выполнить.Поэтому я не уверен, является ли это наиболее эффективным выражением.