我试图按属性的长度来排序Linq查询的结果,然后按属性本身来排序,以便将字符串作为整数排序,但生成的SQL不是按照我的预期排序。
我正在加入多个表格,对其进行过滤,选择DTO:
query = basequery.Select(s => new HeadersDTO
{
headerid = s.Header.id,
orderno = s.Header.orderno,
customer = s.Header.customer,
dateoforder = s.Header.dateoforder,
consignee = s.Location.name,
city = s.Location.name,
state = s.Location.state
}).Distinct();
然后尝试按s.Header.orderno
query = query.OrderByDescending(x => x.orderno.Length).ThenByDescending(x => x.orderno)
.Skip(() => offset).Take(() => criteria.per_page);
这仍然按照正常的方式命令字符串排序,第一个字符优先。
但是如果我选择x.orderno.Length
进入它自己的属性然后按顺序排序就可以了。例如。
query = basequery.Select(s => new HeadersDTO
{
ordernolength = s.Header.orderno.Length <---- added this
headerid = s.Header.id,
orderno = s.Header.orderno,
customer = s.Header.customer,
dateoforder = s.Header.dateoforder,
consignee = s.Location.name,
city = s.Location.name,
state = s.Location.state
}).Distinct();
query = query.OrderByDescending(x => x.ordernolength).ThenByDescending(x => x.orderno)
.Skip(() => offset).Take(() => criteria.per_page);
有没有办法在我不必在选择列表中创建新属性的情况下执行此操作?如果需要,我可以添加更多信息。
答案 0 :(得分:0)