哪个LINQ将选择Leads,其中FirstName.length< 6?
此查询将抛出“无效”,其中'条件。实体成员正在调用无效的属性或方法“
var q = from a in serviceC.LeadSet where a.FirstName.Length < 6 select a;
答案 0 :(得分:4)
这不起作用的原因是所有Linq to CRM语句都转换为查询表达式,而Query Expression不支持长度运算符。这给你留下了几个选择。
使用直接SQL查询来获取所需的数据。这在大多数情况下都不太理想,因为您在SDK之外操作,如果您使用的是CRM Online,则不可能
使用格兰特的答案来实际查看长度,不幸的是,它会拉出所有记录......
尝试这个我刚刚提出的完全未经测试的想法:查询表达式确实具有GreaterEqual条件,因此您应该能够将它与6个单引号的字符串进行比较(因为单引号是排序时的第一个字符)理论上,这应该有效:
var q = from a in serviceC.LeadSet where a.FirstName <= "''''''" select a;
执行测试后,我意识到Linq不接受Expression,即使SQL会。所以答案是创建实际的查询表达式:
QueryExpression qe = new QueryExpression("lead");
qe.Criteria.AddCondition("firstname", ConditionOperator.LessEqual, "''''''");
var entities = service.RetrieveMultiple(qe);
答案 1 :(得分:1)
您可以使用ToList
将集合投影到对象,应该这样做。