Login / Register  search  syndication  about

          Kris Halsrud's Blog

Kris Halsrud on development and Integration with CRM and Development

Returning a distinct result set using IRepository in SalesLogix

Using IRepository in the SalesLogix web client can allow querying the SalesLogix entity model directly, similar to how you used to query the database directly using T-SQL queries.  Ryan has already created a great post here about this, and I expanded on that here.  Today I want to talk about one more functionality of the IRepository, that is how to use Projection to return a distinct list of records from your query.

Lets take a look at how to return a distinct list of Families in the Product table;  The first step is to build your normal query using IRepository:

Sage.Platform.RepositoryHelper<Sage.Entity.Interfaces.IProduct>  repository = Sage.Platform.EntityFactory.GetRepositoryHelper<Sage.Entity.Interfaces.IProduct>();
Sage.Platform.Repository.ICriteria criteria = repository.CreateCriteria();
criteria.Add(repository.EF.IsNotNull("Family"));
criteria.AddOrder(repository.EF.Asc("Family"));

 This established what records you will be returning.  In my case I just added a restriction to only return products with a Family, and then I ordered the result by Family in Ascending order.  Now that we have our query we can then add Projection to it:

criteria.SetProjection(repository.PF.Distinct(repository.PF.Property("Family")));

 Finally we return our distinct list:

System.Collections.IList products = criteria.List();

 With that returned we can then do something with it like bind it to a combo box:

cboFamily.DataSource = products;
cboFamily.DataBind();

Lets look at it all together:

System.Collections.Generic.IList<Sage.SalesLogix.PickLists.PickList>  picklists = Sage.SalesLogix.PickLists.PickList.GetPickListItemsByName("Product Family", true);
Sage.Platform.RepositoryHelper<Sage.Entity.Interfaces.IProduct> repository = Sage.Platform.EntityFactory.GetRepositoryHelper<Sage.Entity.Interfaces.IProduct>();

Sage.Platform.Repository.ICriteria criteria = repository.CreateCriteria();
criteria.Add(repository.EF.IsNotNull("Family"));
criteria.AddOrder(repository.EF.Asc("Family"));

criteria.SetProjection(repository.PF.Distinct(repository.PF.Property("Family")));

System.Collections.IList products = criteria.List();

cboFamily.DataSource = products;
cboFamily.DataBind();

One last thing to note.  If you want to return a distinct result on more than one field you can change this:

criteria.SetProjection(repository.PF.Distinct(repository.PF.Property("Family")));

To this:

criteria.SetProjection(repository.PF.Distinct(repository.PF.ProjectionList()
.Add(repository.PF.Property("Family"))
.Add(repository.PF.Property("Product"))));
What's This?
  
Bookmark and Share

About Kris Halsrud

   Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.


Related Content
   Restricting Adding Opportunity Contacts to Contacts at the Opportunity's Account
 One thing that clients have asked for is how to restrict the selection of the Opportunity Contacts
Posted on Sep 09, 2014 by Kris Halsrud to Kris Halsrud's Blog
 
   How do I access the new Opportunity that I created in Saleslogix??
I had a user ask why they could not access a Salelogix opportunity when they clicked the hyperlink from t
Posted on Sep 04, 2014 by Dale Richter to SalesLogix Questions & Answers
 
   Configuring and Packaging secured actions in Saleslogix 8.0
Using Secured Actions, you can restrict access to user interface elements in the Saleslogix web client.
Posted on Aug 12, 2014 by Jason Buss to Jason Buss' Blog
 
   How do you add a parameter for File Attachment Size and Timeout in Saleslogix 8.1?
Question: Is it possible to set a parameter for file attachment size and timeout in Salelogix? If
Posted on Aug 07, 2014 by Dale Richter to SalesLogix Questions & Answers
 
   Saleslogix XBar Installation
When installing the new XBar application I found the instructions a little vague so I thought I would pas
Posted on Jul 18, 2014 by Mark Duthoy to SalesLogix Support
 
Comments

 

Twitter Trackbacks for SalesLogix Returning a distinct result set using IRepository in SalesLogix: Using IRepository in the SalesLogix we... [customerfx.com] on Topsy.com said:

Pingback from  Twitter Trackbacks for                 SalesLogix Returning a distinct result set using IRepository in SalesLogix: Using IRepository in the SalesLogix we...         [customerfx.com]        on Topsy.com

April 28, 2010 2:27 PM

Leave a Comment

(required)  
(optional)
(required)  
Add
All contents Copyright © 2014 Customer FX Corporation
Customer FX Corporation
2324 University Avenue West, Suite 115
Saint Paul, Minnesota 55114
Tel: 800.728.5783

  Follow @CustomerFX on twitter
Follow the best news, tips, and articles
  Subscribe to Customer FX on youtube
Watch SalesLogix tutorial videos from Customer FX
Login / Register