CRM 2011-Query Expression -(Sort İşlemi )


QueryExpression sorgu=new QueryExpression (){
EntityName="product",
ColumnSet=new ColumnSet(){AllColumns=true}
};

OrderExpression order=new  OrderExpresison(){
 AttributeName="name",  // hangı alana gore sıralama yapacagınızı belırlıyorsunuz.
OrderType=OrderType.Ascending // artan sırada sıralama yapar.Mesela bu örnek te isme gore a dan z ye dogru sıralama yapar.
};

sorgu.Orders.Add(order); // sorgumuza sortumuzu eklemeyı unutmayalım.
Yukarıdakı kod da, tum ürünleri isim alanına gore A dan Z ye dogru sıralar.

Not: Birden cok alana gore sıralama yapmak istersek OrderExpression olusturup QueryExpression ımıza eklememiz gerekir.QueryExpression ımıza ekledıgımız sırada sıralama yapar.

Örnek 2:Birden cok alana gore sıralama 

public static BusinessEntityCollection GetDynamicEntitiesWithFiltersOrdered(string entityName, string[] attributes, string[] fields, string[] values, string[] orderfields, bool[] orderAscending, ICrmService serv)
{
    
        var filters = new FilterExpression { FilterOperator = LogicalOperator.And };

        for (int i = 0; i < fields.Length; i++)
        {
            var condition = new ConditionExpression
            {
                AttributeName = fields[i],
                Operator = ConditionOperator.Equal,
                Values = new[] { values[i] }
            };

            filters.Conditions.Add(condition);
        }
        
        var query = new QueryExpression
        {
            EntityName = entityName,
            ColumnSet = new ColumnSet(attributes),
            Criteria = filters
        };

        for (int i = 0; i < fields.Length; i++)
        {
            var oneExpression = new OrderExpression
                 {
                     AttributeName = orderfields[i],
                     OrderType = (orderAscending[i] ? OrderType.Ascending : OrderType.Descending)
                 };

            query.Orders.Add(oneExpression);
        }

        var retrieve = new RetrieveMultipleRequest { Query = query, ReturnDynamicEntities = true };

        var retrieved = (RetrieveMultipleResponse)serv.Execute(retrieve);

        return retrieved.BusinessEntityCollection;
    }
}

Hiç yorum yok:

Yorum Gönder