使用 QueryExpression 查询特定的记录集
Query particular set of records with QueryExpression
有没有一种方法可以构建只返回一组特定记录的 QueryExpression?
我有以下条件类型:
首先:
Returns前n条记录(即selecttop)
最后:
Returns最后n条记录
每个:
Returns 每第 n 条记录
对于类型"First"我可以使用
queryExpression.TopCount = number_of_records
但我不知道如何才能达到其他类型的标准。问题是数据量很大,如果我需要首先获取所有记录并查询结果,例如使用 Linq 来自定义结果集,我可能会遇到性能问题。
如果我可以构建 QueryExpression 只是select我需要的东西,整个事情就会变得更有效率。
有人知道如何使用 QueryExpression 实现这一点吗?
有问题的系统是 Microsoft Dynamics CRM Online
对于 "last N",您可以反转排序并再次使用 TopCount
。
对于 "every Nth",您可能需要考虑 paging 查询表达式。
假设您要查找每 10 条记录。我可能会做的是将我的页面大小设置为 10 (query.PageInfo.Count
)。
为了尽可能快地遍历页面,我会让 "main" 查询 return 仅使用 GUID。当我检索新的 GUID 页面时,我将获取第一个 GUID 并使用单独的 Retrieve
调用获取该记录所需的列。
最后 N 条记录:非常简单,按特定字段排序,然后是前 N 条,就是这样
Returns 最后 n 条记录
// Instantiate QueryExpression QEaccount
var QEaccount = new QueryExpression("account");
QEaccount.TopCount = 5;
// Add columns to QEaccount.ColumnSet
QEaccount.ColumnSet.AddColumns("name", "ah_account_type", "accountid");
QEaccount.AddOrder("name", OrderType.Descending);
每第 n 条记录:
你在这里有什么特别的标准吗,例如给我国家=德国的所有账户
如果是,那么您可以将用户条件设置为 return 特定记录集,如下所示
// Define Condition Values
var QEaccount_address1_country = "Germany";
// Instantiate QueryExpression QEaccount
var QEaccount = new QueryExpression("account");
// Add columns to QEaccount.ColumnSet
QEaccount.ColumnSet.AddColumns("name", "ah_account_type", "accountid", "address1_country");
// Define filter QEaccount.Criteria
QEaccount.Criteria.AddCondition("address1_country", ConditionOperator.Equal, QEaccount_address1_country);
有没有一种方法可以构建只返回一组特定记录的 QueryExpression?
我有以下条件类型:
首先:
Returns前n条记录(即selecttop)
最后:
Returns最后n条记录
每个:
Returns 每第 n 条记录
对于类型"First"我可以使用
queryExpression.TopCount = number_of_records
但我不知道如何才能达到其他类型的标准。问题是数据量很大,如果我需要首先获取所有记录并查询结果,例如使用 Linq 来自定义结果集,我可能会遇到性能问题。
如果我可以构建 QueryExpression 只是select我需要的东西,整个事情就会变得更有效率。
有人知道如何使用 QueryExpression 实现这一点吗?
有问题的系统是 Microsoft Dynamics CRM Online
对于 "last N",您可以反转排序并再次使用 TopCount
。
对于 "every Nth",您可能需要考虑 paging 查询表达式。
假设您要查找每 10 条记录。我可能会做的是将我的页面大小设置为 10 (query.PageInfo.Count
)。
为了尽可能快地遍历页面,我会让 "main" 查询 return 仅使用 GUID。当我检索新的 GUID 页面时,我将获取第一个 GUID 并使用单独的 Retrieve
调用获取该记录所需的列。
最后 N 条记录:非常简单,按特定字段排序,然后是前 N 条,就是这样 Returns 最后 n 条记录
// Instantiate QueryExpression QEaccount
var QEaccount = new QueryExpression("account");
QEaccount.TopCount = 5;
// Add columns to QEaccount.ColumnSet
QEaccount.ColumnSet.AddColumns("name", "ah_account_type", "accountid");
QEaccount.AddOrder("name", OrderType.Descending);
每第 n 条记录:
你在这里有什么特别的标准吗,例如给我国家=德国的所有账户 如果是,那么您可以将用户条件设置为 return 特定记录集,如下所示
// Define Condition Values
var QEaccount_address1_country = "Germany";
// Instantiate QueryExpression QEaccount
var QEaccount = new QueryExpression("account");
// Add columns to QEaccount.ColumnSet
QEaccount.ColumnSet.AddColumns("name", "ah_account_type", "accountid", "address1_country");
// Define filter QEaccount.Criteria
QEaccount.Criteria.AddCondition("address1_country", ConditionOperator.Equal, QEaccount_address1_country);