LINQ to Dynamics CRM Query фильтрация записей локально

Я написал запрос Linq to CRM, используя поставщика LINQ-to-CRM CRM 2011 RC (v5). У меня есть объявленный локально List , который я хочу присоединить к сущности CRM, и я хочу, чтобы запрос выполнялся на сервере CRM. Пример может помочь:

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');

Или использование временной таблицы, если необходимо объединить несколько полей. Как я могу это сделать?

12
задан Matt 24 February 2011 в 23:13
поделиться