我有一个应用程序需要查询一些实体并获取符合条件的实体。这是做的第一件事。它需要用不同的criteriaValues 多次调用,这很糟糕,因为往返时间严重降低了性能。
private AnEntity GetEntity(string criteriaValue, IOrganizationService service)
{
QueryExpression query = new QueryExpression();
query.EntityName = "entityname";
query.ColumnSet = new ColumnSet(new string[] { "desiredField1", "desiredField2" });
query.Criteria = new FilterExpression();
query.Criteria.FilterOperator = LogicalOperator.And;
query.Criteria.Conditions.Add(new ConditionExpression("criteriaField", ConditionOperator.Equal, criteriaValue));
EntityCollection entities = service.RetrieveMultiple(query);
if (entities.Entities.Count > 0)
{
return (AnEntity)entities[0];
}
return null;
}
现在我正在考虑在应用程序启动时检索所有实体,并在 EntityCollection 上使用 LINQ 查询,类似这样。
private AnEntity GetEntity(string criteriaValue, EntityCollection theEntityCollection)
{
var desiredEntity = from e in theEntityCollection.Entities
where e.criteriaField.Equals(criteriaValue)
select e;
return (AnEntity)desiredEntity;
}
这种方法有更好的选择吗?就像检索所有内容,将它们存储在 HashTable/Dictionary 中并使用 criteriaValue 作为键一样?我很想听听任何建议。
非常感谢您的任何指导。