[英]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>>
收到錯誤。
本質上,問題在於每個表達式可能會產生多個Date
或DateTime
。 如果用聚合函數(例如Min
或Max
替換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.