Tôi đã viết truy vấn LINQ to CRM bằng cách sử dụng nhà cung cấp CRM 2011 RC (v5) LINQ-to-CRM. Tôi có một danh sách được khai báo cục bộ <T> mà tôi muốn tham gia vào một thực thể CRM và tôi muốn truy vấn được thực hiện trên Máy chủ CRM. Ví dụ có thể giúp:LINQ to Dynamics CRM Hồ sơ lọc truy vấn cục bộ
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());
}
Mã trên biên dịch và thực thi, tuy nhiên, việc lọc các bản ghi được thực hiện cục bộ sau khi truy xuất toàn bộ bản ghi thực thể CRM. Rõ ràng khi thực thể CRM chứa hàng nghìn hàng, truy vấn sẽ hoạt động kém hoặc thậm chí hết thời gian chờ.
Tôi đã đọc về IQueryable và IEnumerable và đã thử chuyển đổi Danh sách bằng phương thức mở rộng AsQueryable(), không có hiệu lực. Tôi cần truy vấn LINQ trên của tôi để chạy SQL như sau:
SELECT a.*
FROM customAccountEntity AS a
WHERE a.account_number IN ('123', '456');
Hoặc sử dụng bảng tạm thời nếu muốn tham gia nhiều trường. Làm thế nào tôi có thể thực hiện điều này?
Tôi đã sử dụng các nhà cung cấp truy vấn LINQ-to-CRM - Tôi có thể sử dụng nhiều hơn một nhà cung cấp trong cùng một truy vấn? – Iftekhar
Ok sau khi xem xét kỹ truy vấn của bạn, tôi nghĩ bạn nên làm theo cách khác (không tham gia nhưng chứa) – Guillaume86
Tôi muốn truy vấn của mình được dịch sang SQL và lọc để chạy trên Máy chủ SQL. Phương thức Contains extension chỉ đơn giản là lọc nội bộ. – Iftekhar