我試圖從我的類QCA中選擇Sales的值。我正在使用linq查詢QCA的集合。我想按日期最近一次當我嘗試此代碼時,我得到錯誤告訴我它不能將IEnumerable轉換爲十進制。 我哪裏錯了?使用Linq轉換爲十進制
SalesTotal = (from q in QuickCreditAssessments orderby q.FinancialsDate ascending
select q.Sales).Skip(1).Take(1);
我試圖從我的類QCA中選擇Sales的值。我正在使用linq查詢QCA的集合。我想按日期最近一次當我嘗試此代碼時,我得到錯誤告訴我它不能將IEnumerable轉換爲十進制。 我哪裏錯了?使用Linq轉換爲十進制
SalesTotal = (from q in QuickCreditAssessments orderby q.FinancialsDate ascending
select q.Sales).Skip(1).Take(1);
如果你想要一個不使用Take
但First/FirstOrDefault/Single/SingleOrDefault
:
decimal salesTotal = (from q in QuickCreditAssessments
orderby q.FinancialsDate ascending
select q.Sales)
.Skip(1) // now you get the second to last by Date
.FirstOrDefault();
順便說一句,如果你想在「按日期最近的一個」你應該使用descending
。
Take
回報IEnumerable<T>
,而不是在你的情況採取我會用FirstOrDefault()
,像這樣:
SalesTotal = (from q in QuickCreditAssessments orderby q.FinancialsDate ascending
select q.Sales).Skip(1).FirstOrDefault();
......大概沒有使用'.Skip(1)'因爲這將意味着他們得到的第二個可用。 – 2015-04-02 14:07:42
@JonHanna:你說得對,我在Skip上添加了一條評論,也許OP希望第二個持續。同樣值得注意的是,如果沒有或只有一個記錄,他也不會得到任何記錄。 'FirstOrDefault'表示'0',因爲這是'decimal'的默認值。 – 2015-04-02 14:12:53
@Jon Hanna。謝謝。這工作正好。另外,降序也是我需要的。這就像你閱讀我的想法。 :) – 2015-04-02 14:31:53