簡體   English   中英

Linq查詢到orderby

[英]Linq query to orderby

我的數據庫有3個表。 我要做的就是在表3中的最新日期之前對其進行排序

桌子有點像

表格1

ID    CompanyId
1       1
2       1
3       2

表2

Id    CompanyColumn
1      Blah
2      Bleh

表3

Id    CompanyId    Date
1       1          5/1/2015
2       1          8/1/2015
3       1          15/1/2015
4       2          6/1/2015

我正在使用EF,並且我的對象基於Table1

所以我可以

var tab1 = this.Entities.Table1;//I now have a reference to table 1


var result = from t in tab1
             group t by d.Table2.Table3.Select(a => a.Date)
             into g
             select g.FirstOrDefault();

錯誤消息是

在基礎商店提供程序中,用於調用“ GroupBy”方法的鍵選擇器類型不可比。

我試過了

var result = from t in tab1
             group t by d.CompanyId
             into g
             select g.FirstOrDefault();

result = result.OrderByDescending(a => a.Table2.Table3.Select(b => b.DateTime));

錯誤消息是

DbSortClause表達式的類型必須與順序可比。\\ r \\ n參數名稱:key

我完全迷路了

當你這樣做

d.Table2.Table3.Select(a => a.Date)

或這個

a.Table2.Table3.Select(b => b.DateTime)

您將獲得由第一種情況的IQueryable<Date>或第二種情況的IQueryable<DateTime>表示的整個日期序列。 因為IQueryable<T>不是IComparable<IQueryable<T>>收到錯誤。

本質上,問題在於每個表達式可能會產生多個DateDateTime 如果用聚合函數(例如MinMax替換Select ,則代碼將編譯:

var result = from t in tab1
         group t by d.Table2.Table3.Min(a => a.Date)
         into g
         select g.FirstOrDefault();

要么

result = result.OrderByDescending(a => a.Table2.Table3.Min(b => b.DateTime));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM