我正在尝试从CRM 2011中检索所有帐户记录,以便我可以使用ForEach循环遍历它们并填充下拉列表。我正在阅读这篇文章(Retrieving list of Entities)并且能够检索满足特定条件的所有帐户,但我该如何检索所有?这是每一个账户记录,无论条件如何?
这是我正在使用的代码,但我不知道在context.AccountSet之后使用哪种方法。获得所有帐户。
var context = new XrmServiceContext();
var parentAccount = context.AccountSet.All(snippet => snippet.ParentAccountId == "Account1");
使用context.AccountSet.All我可以获得符合条件的所有记录,但我真的不需要条件......
感谢您的帮助!
答案 0 :(得分:3)
为什么不检索与下拉列表相关的内容?
Account有许多属性会使查询膨胀。
/* If you only want name */
var accounts = context.AccountSet.Select(acc => acc.Name);
/* If you want more attributes */
var accounts = context.AccountSet
.Select(acc => new
{
name = acc.Name,
guid = acc.AccountId,
parent = acc.ParentAccountId,
number = acc.AccountNumber
});
/* No need to call .ToList() on accounts, just iterate through the IQuerable */
foreach (var account in accounts)
{
// Add account to drop down
}
答案 1 :(得分:2)
AccountSet
已经包含了所有记录,这就是为什么如果你.ToList()
List
得到Account
AccontSet
因为你转换{{1}收集到List。
答案 2 :(得分:1)
试试这个:
var parentAccount = (from c in context.CreateQuery<Account>()
select c);
如果它没有返回正确的类型而不是var use
IEnumerable<Account>
您可能还需要包含
using System.Linq;
答案 3 :(得分:0)
首先,您应该与CRM建立连接。通过CRMConnection类或最新的CRM 2016连接方法。 下方链接。 https://msdn.microsoft.com/en-in/library/jj602970.aspx
建立连接后。 您可以使用QueryExpression类查询实体并将整个数据存储在ColumnSet中,ColumnSet是一组列,顾名思义。此代码将crm中的帐户名和ID存储到单个列表中。请注意,columnset采用字符串参数,因此可以将columnname的字符串数组传递给它。谢谢,如果您有疑问,请告诉我。
QueryExpression query = new QueryExpression("account");
query.ColumnSet.AddColumns("name","accountid");
// query.Criteria.AddFilter(filter1);
EntityCollection result1 = service.RetrieveMultiple(query);
Console.WriteLine(); Console.WriteLine("Query using Query Expression with ConditionExpression and FilterExpression");
Console.WriteLine("---------------------------------------");
foreach (var a in result1.Entities)
{
//Console.WriteLine("Name: " + a.Attributes["name"]);
ListAccountName.Add(a.Attributes["name"].ToString());
ListAccountId.Add(a.Attributes["accountid"].ToString());
}