鉴于以下实体:
Question
-string Title
-ICollection<Tag> Tags
Tag
-string Value
-string TagType
如何根据给定Questions
的{{1}} Value
对Tags
进行排序?这里的问题是TagType
可能有Question
个给定的Tags
。如果TagType
有多个Question
(在我的情况下大多不常见),我只关心第一个Tags
。
这是一个示例数据表输出,其中TagTypes有自己的列:
Tag
鉴于Title (Question.Title) | Topic (TagType) | Module (TagType)
-----------------------------------------------------------
Question 1 | Algebra | Maths
,我可以向IQueryable<Question>
发送什么表达式来实现我的目标?
答案 0 :(得分:0)
Enumerable.OrderBy(x => x.Tags.Where(x => x.TagType == aTagType).First().Value);
答案 1 :(得分:0)
感谢@James提供的建议,但这不起作用。解决方案是使用Min
和Max
对子集合的字段进行排序:
if (sortDescending)
{
expr = q => q.Tags
.Where(t => t.TagType.Equals(sortByTagType, StringComparison.CurrentCultureIgnoreCase))
.Max(t => t.Value);
}
else
{
expr = q => q.Tags
.Where(t => t.TagType.Equals(sortByTagType, StringComparison.CurrentCultureIgnoreCase))
.Min(t => t.Value);
}