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
   Confirming Actions With an "Are you sure?" Prompt in Infor CRM (Saleslogix)
I'm not a huge fan of bugging end users. I figure, if an end user clicked something, he or she meant
Posted on Nov 18, 2014 by Ryan Farley to Ryan Farley's Blog
 
   Manipulating the DependencyLookup Control in the Infor CRM Web Client (Formerly Saleslogix)
 The Dependency Lookup control in the Saleslogix web client is what is used for the hierarchical Are
Posted on Nov 14, 2014 by Kris Halsrud to Kris Halsrud's Blog
 
   Infor CRM (formerly Saleslogix) Statement of Direction
Learn more about the future of Infor CRM. Recently I received my login information for the Infor Partn
Posted on Nov 13, 2014 by Brianna Ojard to The Inbox
 
   Adding a report link to the Common Tasks pane in Infor CRM (formerly Saleslogix)
When you are viewing an Entity Detail page, the Common Tasks pane on the right of the page provides a nu
Posted on Nov 12, 2014 by Jason Buss to Jason Buss' Blog
 
   How to Sum a Collection using Hibernate Criteria and Projections
 To sum the results of a criteria collection you can use code such as the following, which gets the
Posted on Nov 07, 2014 by Kris Halsrud to Kris Halsrud's Blog
 
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