#c# #linq
#c# #linq
Вопрос:
Я пытаюсь получить первый заказ, который был размещен каждым клиентом, на основе метки времени.
Ниже приведен некоторый псевдокод, который не компилируется :
var minOrders = (from Orders in DataSet.Orders select Orders.OrderTimestamp).Min()
join Customers in DataSet.Customers on Orders.CustomerId equals Customers.CustomerId
select new
{
Customers.Name,
Orders.OrderAmount
});
Любые указатели на правильную структуру LINQ были бы полезны, спасибо.
Джо
Комментарии:
1. Вы пытаетесь получить это для одного конкретного клиента или для первого заказа для каждого клиента?
2. Привет, Джон, для каждого. Я отредактировал.
Ответ №1:
Основываясь на написанном вами коде, я полагаю, вам нужен первый порядок каждого костюма
Тогда ваше утверждение будет
var minOrders = from customer in DataSet.Customers
let order = (from o in DataSet.Orders
where o.CustomerId == customer.CustomerId
order by o.OrderTimestamp
select o).first()
select new
{
customer.Name,
order.OrderAmount
});
Комментарии:
1. Спасибо за это, Фредерик — я надеялся использовать MIN() для немного более элегантного решения, хотя я буду использовать ваш ответ в качестве основы — Спасибо
2. @Joe. Net Рад помочь, я думаю, что с MIN это усложняется. Вы также можете изучить методы sql в пространстве имен System.Data.Linq.SqlClient (возможно, потребуется добавить dll)
3. Спасибо, из интереса, почему MIN должен быть более сложным?
4. @Joe. Net ну, я не нашел хорошего решения с помощью min, если вы найдете его, вы всегда можете сказать мне 🙂