繁体   English   中英

如何提取order by子句,以便我可以使用逻辑来设置它?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM