public static T[] FindEntities<T>(string[] attributes, object[] values,
ConditionOperator[] operators, string[] columns, string[] orderAttribute,
OrderType[] orderType) where T : BusinessEntity
{ if (_service == null)
_service = GetInstance();
QueryExpression query = new QueryExpression();
query.EntityName = typeof(T).Name;
ConditionExpression[] conditionExpressions = null;
if (attributes != null && values != null)
{ conditionExpressions = new ConditionExpression[attributes.Length];
for (int i = 0; i < conditionExpressions.Length; i++)
{ ConditionExpression conditionExpression = new ConditionExpression();
conditionExpression.AttributeName = attributes[i];
conditionExpression.Operator =
operators == null ? ConditionOperator.Equal : operators[i];
conditionExpression.Values = new object[] { values[i] };
conditionExpressions[i] = conditionExpression;
}
}
FilterExpression filterExpression = new FilterExpression();
filterExpression.FilterOperator = LogicalOperator.And;
filterExpression.Conditions = conditionExpressions;
query.Criteria = filterExpression;
if (orderAttribute != null)
{ for (int i = 0; i < orderAttribute.Length; i++)
{ OrderExpression order = new OrderExpression();
order.AttributeName = orderAttribute[i];
order.OrderType =
orderType[i] == null ? OrderType.Ascending : orderType[i];
query.Orders = new OrderExpression[] { order }; }
}
ColumnSetBase columnSet = null;
if (columns == null)
{ columnSet = new AllColumns();
}
else
{ columnSet = new ColumnSet();
((ColumnSet)columnSet).Attributes = columns;
}
query.ColumnSet = columnSet;
query.EntityName = typeof(T).Name;
BusinessEntityCollection result = _service.RetrieveMultiple(query);
T[] entities = new T[result.BusinessEntities.Length];
Array.Copy(result.BusinessEntities, entities, entities.Length);
return entities;
}