2017-02-16 4 views
1

IQueryableの結果を返すこのクエリがあります。IQueryableの結果を並べ替えるLinq

return supplierInvoices.Union(otherInvoices.Join(orders, invoice => invoice.OrderId, order => order.Id, (invoice, order) => new { Order = order, Invoice = (invoice as IReconcilableInvoiceEntity) })) 
      .GroupBy(m => m.Order) 
      .Where(m => m.Any()) 
      .Select(m => new KeyValuePair<Order, IQueryable<IReconcilableInvoiceEntity>>(m.Key, m.Select(n => n.Invoice).AsQueryable())); 

IはCreatedOnカラム(datetime)によって降順にソートされるために、これを必要とします。私はこのクエリでorderbydescending(a => a.CreatedOn)orderbydescending(a=> a.Key.CreatedOn)を使用しようとしましたが、期待される結果は得られませんでした。すべての助けに感謝します。ありがとう!

編集 - 私は

return supplierInvoices.Union(otherInvoices.Join(orders, invoice => invoice.OrderId, order => order.Id, (invoice, order) => new { Order = order, Invoice = (invoice as IReconcilableInvoiceEntity) })) 
      .GroupBy(m => m.Order) 
      .Where(m => m.Any()) 
      .OrderByDescending(m => m.Key.CreatedOn) 
      .Select(m => new KeyValuePair<Order, IQueryable<IReconcilableInvoiceEntity>>(m.Key, m.Select(n => n.Invoice).AsQueryable())); 

を試してみましたが、何これは正しくソート

別のエラーを与える

return supplierInvoices.Union(otherInvoices.Join(orders, invoice => invoice.OrderId, order => order.Id, (invoice, order) => new { Order = order, Invoice = (invoice as IReconcilableInvoiceEntity) })) 
      .GroupBy(m => m.Order) 
      .Where(m => m.Any()) 
      .Select(m => new KeyValuePair<Order, IQueryable<IReconcilableInvoiceEntity>>(m.Key, m.Select(n => n.Invoice).AsQueryable().OrderByDescending(m => m.CreatedOn))); 

をしようとしません。あなたは二つの列で注文したい場合は

+1

OrderByDescendingを使用して質問を編集してください。これは動作していないため、試した内容を確認できます。 – Esko

+0

@Esko:更新済.. – Isuru

答えて

1

は、あなたは "OrderByDescending(A => a.column1)" は、所望の結果を得るために "ThenBy(A => a.column2)" に続いて使用することができます。