c#-如何获取Dynamics CRM 2011中每个帐户的活动?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-如何获取Dynamics CRM 2011中每个帐户的活动?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2624字,纯文字阅读大概需要4分钟。
内容图文
![c#-如何获取Dynamics CRM 2011中每个帐户的活动?](/upload/InfoBanner/zyjiaocheng/683/c6183e71b7ef452ba4bae41078bdaa27.jpg)
我正在使用此C#SDK从Dynamics CRM 2011获取数据:https://msdn.microsoft.com/en-us/library/gg695803(v=crm.5).aspx
我需要从中读取所有帐户,并读取与其关联的活动(实际上,只有最后一个已关闭和未完成的活动).
要获取帐户,我使用以下代码:
var accounts = xrm.AccountSet
.Select(acc => new
{
name = acc.Name,
guid = acc.AccountId,
parent = acc.ParentAccountId,
number = acc.AccountNumber,
website = acc.WebSiteURL,
});
已在以下问题中建议这种方式:Retrieve list of all accounts in CRM through C#?
问题是,我找不到获取活动的方法.是否有与“活动”相关的字段?我能找到的是一个单独的活动实体,在Dynamics CRM 2011解决方案中它具有自己的字段.
我也是C#的新手.
编辑:感谢乔迪,我现在似乎能够使用此特定类型的活动:
public class AccountTask
{
public string account;
public string task;
}
var accountsAndTasks = (from t in xrm.CreateQuery<Task>() join a in xrm.CreateQuery<Account>() on t.RegardingObjectId.Id equals a.AccountId select new AccountTask {
account = a.Name,
task = t.OwnerId.Name.ToString()
}).ToList();
现在,是否有办法一次获取每个帐户的所有活动类型?
并且,是否有可能只为每个帐户获取最新的未结清和结清活动?
解决方法:
RegardingObjectId字段是将活动实体记录与帐户实体记录相关联的字段之一.
您可以这样获取活动实体记录:
var activityBaseList = serviceContext.CreateQuery<Activity>()
.Where(x => x.RegardingObjectId.Id == accountId).ToList();
这是一个基本实体,仅具有有关活动的基本信息.如果您需要有关每个活动记录的更多信息(大多数情况下确实需要),那么您将不得不使用不同的活动类型进行多个查询.像这样:
var emailActivityList = serviceContext.CreateQuery<Email>()
.Where(x => x.RegardingObjectId.Id == accountId).ToList();
var taskActivityList = serviceContext.CreateQuery<Task>()
.Where(x => x.RegardingObjectId.Id == accountId).ToList();
//and so on
我更喜欢使用QueryBase请求,因为在这种情况下,您可以将查询合并到对IOrganizationService的ExecuteMultipleRequest调用中,以提高性能,但要注意以下限制:info about ExecuteMultipleRequest limitations.
更新
我没有在底部看到您的其他问题.如果只需要打开活动,则需要在上面编写的每个查询中添加x.StateCode == 0;如果只需要关闭活动,则需要添加x.StateCode ==2.例如,仅检索打开的电子邮件活动:
var emailActivityList = serviceContext.CreateQuery<Email>()
.Where(x => x.RegardingObjectId.Id == accountId && x.StateCode == 0).ToList();
所有实体的状态码和状态均为Here is the list.
如果您需要检索,假设仅是最近的未完成活动(您将自己定义需要多久的活动),请拨打以下电话:
var createdOnFilter = DateTime.Now.AddDays(-1); //change it as you need it
var emailActivityList = serviceContext.CreateQuery<Email>()
.Where(x => x.RegardingObjectId.Id == accountId &&
x.StateCode == 0 &&
x.CreatedOn >= createdOnFilter)
.ToList();
这是一个非常基本的代码,并且在Web上有很多有关它的信息.
内容总结
以上是互联网集市为您收集整理的c#-如何获取Dynamics CRM 2011中每个帐户的活动?全部内容,希望文章能够帮你解决c#-如何获取Dynamics CRM 2011中每个帐户的活动?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。