SortBy包含IQueryable中的值
本文关键字:包含 IQueryable SortBy | 更新日期: 2023-09-27 18:14:44
我正在学习更多关于IQueryable's和有一个排序方法:
public IQueryable<T> OrderEntities(IQueryable<T> entities, string sortColumn, string sortOrder)
{
string sort = sortColumn;
if (!String.IsNullOrEmpty(sortColumn))
{
sort += " " + sortOrder;
}
return entities.SortBy<T>(sort);
}
工作得很好,除非我的实体查询包含一个延迟加载或包含的表,该表具有您尝试排序的属性。这是可能通过一个可查询的扩展,我看到周围浮动吗?
你在linq查询中使用魔法字符串,这在某些情况下工作,在我看来是不好的做法。
如果您真的只能通过字符串获得所需的排序,我建议您使用字典将您允许的魔术字符串映射到谓词:IDictionary<string, Funct<...>
这样就可以实现强类型、编译时检查和字符串的灵活性。在字典中查找字符串参数,然后将谓词应用于OrderBy子句。
如果请求的排序不被支持,您可以使用字典函数来验证并向用户/开发人员报告一个全面的消息。