我在列表中有一堆自定义实体记录(来自 csv 文件)。
检查哪些记录是新记录并创建新记录的最佳方法是什么?
在这种情况下,相等性检查基于单个文本字段,但我需要在其他地方做同样的事情,其中相等性检查基于查找和 2 个文本字段。
为了争论,假设我正在插入帐户记录,这就是我目前拥有的:
private void CreateAccounts()
{
var list = this.GetAccounts(); // get the list of Accounts, some may be new
IEnumerable<string> existingAccounts = linq.AccountSet.Select(account => account.AccountNumber); // get all Account numbers in CRM, linq is a serviceContextName variable
var newAccounts = list.Where(account => !existingAccounts.Contains(account.AccountNumber)); // Account numbers not in CRM
foreach (var accountNumber in newAccounts) // go through the new list again and get all the Account info
{
var account = newAccounts.Where(newAccount => newAccount.AccountNumber.Equals(accountNumber)).FirstOrDefault();
service.Create(account);
}
}
有一个更好的方法吗?
我似乎在列表中迭代了太多次,但它一定比多次查询 CRM 更好:
foreach (var account in list)
{
// is this Account already in CRM
// if not create the Account
}