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
   Infor CRM (Formerly Saleslogix) Error in the Web Client- Invalid usage of the option NEXT in the FETCH statement. : Incorrect syntax near 'OFFSET'
 I recently ran into a web client system that was unable to operate properly.  Whenever a page
Posted on Apr 29, 2015 by Kris Halsrud to Kris Halsrud's Blog
 
   InforCRM 8.1 (formerly SalesLogix) SpeedSearch Repair
If the Speedsearch Server is returning an error "Unable to locate the SpeedSearch Directory" a
Posted on Apr 24, 2015 by Mark Duthoy to SalesLogix Support
 
   How do I wrap text in Textboxes in Infor CRM (formerly Saleslogix)?
Recently an Infor CRM administrator contacted me in regards to many of their textboxes for Notes in the I
Posted on Apr 01, 2015 by Dale Richter to Infor CRM Questions & Answers
 
   InforCRM (formerly Saleslogix) Mobile - Clearing Out Earlier Customizations
If you started with an earlier version of SalesLogix Mobile, let's say version 7.5.4, and customized
Posted on Mar 30, 2015 by Mark Duthoy to SalesLogix Support
 
   How do you set the Base Directory when Deploying your Web Client on Infor CRM 8.1?
Question:How do I make sure my Base Directory is set correctly on Infor CRM ? Recently I had a custo
Posted on Mar 06, 2015 by Dale Richter to Infor CRM Questions & Answers
 
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 © 2015 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