.Find(id)
方法的时间复杂度是多少?循环遍历id列表并使用.Find()
?
也可以找到'同一个查询中的多个ID?
foreach (var id in idList)
{
var task = _model.Tasks.Find(id);
Save(task,task.id);
}
这样做的最佳方式是什么?
答案 0 :(得分:1)
根据您使用元素的方式(以及有多少元素),您可能会发现一次加载所有实体要好得多:
// given List<int> idList
var tasks = _model.Tasks.Where(x => idList.Contains(x.id))
foreach (var task in tasks)
{
Save(task, task.id);
}
请注意Find
使用主键执行Where
,因此如果实体没有主键或者具有复合键,则必须小心。您也没有获得密钥类型的任何编译时安全性(即您可以将string
传递给具有int
PK的实体,并且仅在运行时查找。<登记/>
当然,如果列表足够大,您可以通过一次性提供所有数据来遇到OutOfMemoryException
。