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