我正在嘗試按屬性的長度排序Linq查詢的結果,然後通過屬性本身來排序字符串作爲整數,但生成的SQL沒有按照我預期的那樣排序。Linq OrderBy字符串屬性長度必須在選擇列表
我加入多個表,過濾下來,以選擇一個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);
有沒有辦法做到這一點,我沒有創建在選擇列表中的新特性?如果需要,我可以添加更多信息。
'query.OrderByDescending(X => Int32.Parse(x.orderno))' –
是orderNo數字基於字符串? –
@SamAxe我以前見過,但它會拋出一個'Linq To Entities不能識別Int 32 Parse'錯誤。 –