问题描述
我想按ShortName排序,然后按电话号码排序。首先显示带有phoneNumber的记录,然后不显示。
我尝试过:
SELECT *
FROM VIEW_DB.VIEW1 VC0 LEFT OUTER JOIN
VIEW_DB.VIEW2 VC1
ON TO_DATE(VC0.STRING_DATE,'MMM DD YYYY') = VC1.CALENDAR_DAY;
但结果我得到:
System.NotSupportedException:'LINQ to Entities无法识别方法'System.String Order(DOCR.Domain.Entities.CRM.Contractor)'方法,并且该方法无法转换为商店表达式。'
有人知道如何解决此问题吗?
解决方法
考虑到评论中的建议,我试图进行思考,并提出了一个可行但可能不是最有效的解决方案。下面的代码代表.OrderByDescening
,首先用缩写的首字母代表,然后放在末尾的主要联系人没有电话号码的末尾(知道也没有电话号码可以输入为"---"
。
var x = q.OrderByDescending(e => e.ShortName.Substring(0,1))
.ThenBy(c => (c.Contacts.FirstOrDefault(p => p.Id == c.LeadingContact).PhoneNumber ?? "---").Equals("---") ? 1 : 0);
如果您有如何优化或编写更好的知识,我将不胜感激您的建议