IQueryable Friday!

IQueryable

It can be useful to allow operations on an IQueryable without exposing the IQueryable itself.

For example if you want to allow the vast amount of LINQ commands through a repository, but without exposing the IQueryable itself (as the caller may attempt to use the IQueryable after the repository has been disposed).This can be done with a generic repository method that takes a function that operates on an IQueryable, for example:

public static void Main(){int OrderNumber = 123;var repo = new Repository<SalesOrder>();SalesOrder so = repo.Operation(iq => iq.Where(s => s.OrderNumber == OrderNumber).First());}public class SalesOrder{public int OrderNumber{ get; set; }}public class Repository<T>where T: class{public TResult Operation<TResult>(Func<IQueryable<T>, TResult> function){return function(Set);}private IQueryable<T> Set { get { return _set; } }private IQueryable<T> _set = /*IQueryable here*/;}

 Comments, or Questions?  Get in touch.

Previous
Previous

Getting the most out of Dynamics 365 Activities

Next
Next

We are here! New Office in Whitstable!