2011-03-24 40 views
0

我有一個名爲Total的屬性,它來自我的數據對象上的其他值。當我嘗試在linq to sql語句中使用此屬性時,我得到:成員'...'沒有支持的SQL轉換。這是有道理的,但有沒有解決這個場景的工作?謝謝!如何通過linq to sql中的派生屬性進行排序?

+0

你究竟是什麼意思的「派生」 - 是你的模型的屬性部分? – BrokenGlass 2011-03-24 01:33:02

+0

@Broken:我相信他的意思是這是一個在他的模型中使用其他屬性來產生價值的屬性。 – 2011-03-24 01:34:34

+0

它在一個部分類中用於總計其他一些屬性。 – Mike 2011-03-24 01:37:19

回答

2

你可以調用查詢,而不是你的OrderBy()子句。

var items = context.Tables.ToList().OrderBy(x=>x.Total); 

你可以做到這一點,因爲你調用你會使用LINQ to對象.ToList()後。

由於破碎提到這可能不是在所有情況下,另一種可能的解決辦法是複製你的總計算在你的.Select()

,我的語法可能會偏一點,不要有VS與我:)

var items = context.Tables.Select(t=> new {t.Item1, Total=(t.Price + t.Tax)}) 
          .OrderBy(t=>t.Total); 

現在這種類型的投影你不會有Table結束了更多的,但可能是一種選擇理所當然的。

+0

如果查詢包含'Skip()'或'Take()',這可能不是一個選項,否則你必須從數據庫中提取所有*記錄。 +1,因爲我不能拿出更好的東西。另外'AsEnumerable()'是更輕量級的方法。 – BrokenGlass 2011-03-24 01:40:03

相關問題