[英]How to extract an order by clause so I can use logic to set it?
我想提取一个OrderBy子句,这可能吗?
所以我可以这样做:
OrderBy ob = null;
if(....)
ob = x.Id
else
ob = x.Name
var result = source.OrderBy(ob);
这可能吗?
您可以执行几乎完全映射到您正在执行的操作的操作,但更简单的选项是跟踪查询,而不是订购方法:
IQueryable<Whatever> query = someQuery;
if(something)
query = query.OrderBy(item => item.Id);
else
query = query.OrderBy(item => item.Name);
但是,如果你真的想:
Expression<Func<Whatever, object>> selector = null;
if(something)
selector = item => item.Id;
else
selector = item => item.Name;
var results = query.OrderBy(selector);
你可以尝试这样的事情:
IQueryable<Foo> result = source ...
if(....)
result = result.OrderBy(x => x.Id);
else
result = result.OrderBy(x => x.Name);
为什么不单独执行条件逻辑并根据条件执行单独的OrderBy()?
防爆。
if(foo == true)
{
result = result.OrderBy(r => r.Id);
}
else
{
result = result.OrderBy(r => r.Name);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.