1
我正在嘗試制定一個LINQ查詢來從列表中提取項目,列表包含子項目列表 - 我需要查詢項目,然後使用結果我最後一種記錄中的項目返回了查詢。使用子查詢對Linq結果進行升序然後降序
的父母是表(MediaItems中) - 類結構如下:
MediaItems
.ID (int)
.Src (string)
.Advert (bool)
.AdOptions As List(Of AdvertOptions)
.Counter (int)
AdvertOptions class consists of:
.Age (int)
.Gender (int)
.Priority (int)
我想查詢符合以下條件的任何MediaItems:
.Advert = true
.Age = x (paramter in calling function)
.Gender = y (paramter in calling function)
要做到這一點,我正在使用以下LINQ查詢:(年齡和性別是功能參數)
Where(Function(s) s.Advert And s.AdOptions.Any(Function(a) a.Gender = Gender And a.Age = Age))
我現在需要基於兩個級別進行排序的結果進行排序:
AdOptions.Priority(按降序排列),然後排序計數器升序排列
這是我的失敗嘗試:
Where(Function(s) s.Advert And s.AdOptions.Any(Function(a) a.Gender = Gender And a.Age = Age)).OrderBy(Function(a) From p1 In a.AdOptions Where p1.Gender = Gender And p1.Age = Age Select p1.Priority).ThenByDescending(Function(s) s.Counter)
我嘗試不工作,我收到以下錯誤:
at least on object must implement IComparable
任何人都可以看到需要做,以實現我的目標是什麼?
本
感謝您的建議。我對Linq還是比較新的,所以我會研究這些建議。如果你知道任何好的例子,我很樂意看到它們。再次感謝。 – Ben
@Ben:用你想要的東西替換我的答案。請注意,我現在假設您想按照廣告的最高優先級進行排序(因爲它可以有多個AdOptions) – sehe
我試圖讓我的頭繞着你的答案(試圖快速學習)。我想你已經明白了。 – Ben