【发布时间】:2011-06-24 01:03:41
【问题描述】:
我使用 CRM 2011 RC (v5) LINQ-to-CRM 提供程序编写了一个 Linq to CRM 查询。我有一个本地声明的 List
MyObject myObject = new MyObject();
List<myAccount> myAccountsList = new List<myAccount>();
myAccountsList.Add(new myAccount() {AccountNumber = "123"};
myAccountsList.Add(new myAccount() {AccountNumber = "456"};
myObject.ListOfAccounts = myAccountsList;
var accountsQuery = from ax in myObject.ListOfAccounts
join a in orgContext.CreateQuery<customAccountEntity>() on ax.AccountNumber equals a.account_number
select a;
foreach(var item in accountsQuery)
{
Console.WriteLine("Id of record retrieved: " + a.Id.ToString());
}
上面的代码编译并执行,但是,在检索到整个 CRM 实体记录集后,记录的过滤是在本地执行的。显然,当 CRM 实体包含数千行时,查询将执行不佳甚至超时。
我已阅读有关 IQueryable 和 IEnumerable 的信息,并尝试使用 AsQueryable() 扩展方法转换列表,但没有效果。我需要我上面的 Linq 查询来运行这样的 SQL:
SELECT a.*
FROM customAccountEntity AS a
WHERE a.account_number IN ('123', '456');
如果想连接多个字段,也可以使用临时表。我怎样才能做到这一点?
【问题讨论】:
标签: c# linq dynamics-crm dynamics-crm-2011