Bvr*_*rce 4 linq dynamics-crm-2011
如何编写LINQ查询以返回帐号不在列表中的所有帐户?
该列表将从excel文档中提取.
private bool GetAccounts()
{
List<String> accountIds = new List<String>();
accountIds.Add( "[unknown]");
var query = from accounts in context.AccountSet where !accountIds.Contains(accounts.AccountNumber) select accounts;
}
Run Code Online (Sandbox Code Playgroud)
它不必是List.
编辑
这是上述查询运行时发生的情况 - 这是CRM的错吗?

And*_*ers 15
我不相信你可以通过linq.以下是SDK中的where子句限制.
where =>子句的左侧必须是属性名称,子句的右侧必须是值.您不能将左侧设置为常量.该子句的两个边都不能是常量.
支持String函数Contains,StartsWith,EndsWith和Equals.
您可以使用QueryExpression或FetchExpressions来解决这些限制.您想要的查询使用QueryExpression看起来像这样.我唯一要提的是,如果你期待很多记录(我相信5000+),你很可能也需要为你的功能实现分页.
private static IEnumerable<Account> GetAccounts(IOrganizationService proxy)
{
List<String> accountIds = new List<String>(new string[]{"654321", "12345"});
var results = proxy.RetrieveMultiple(new QueryExpression(Account.EntityLogicalName)
{
ColumnSet = new ColumnSet("accountid", "name", "accountnumber"),
Criteria = new FilterExpression()
{
Conditions = { new ConditionExpression("accountnumber", ConditionOperator.NotIn, accountIds) }
}
});
return results.Entities.Select(x=> x.ToEntity<Account>());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3563 次 |
| 最近记录: |