Using System;
<summary>
Sorting specifications
</summary>
<typeparam name= "T" ></typeparam>
Using System.Linq.Expressions;
public interface isortable<t>
{
<summary>
Increasing
</summary>
<typeparam name= "TKey" ></typeparam>
<param name= "Keyselector" ></param>
<returns></returns>
Isortable<t> asc<tkey> (global::system.linq.expressions.expression<func<t, TKey>> Keyselector);
<summary>
and then increment
</summary>
<typeparam name= "TKey1" ></typeparam>
<typeparam name= "TKey2" ></typeparam>
<param name= "KeySelector1" ></param>
<returns></returns>
Isortable<t> thenasc<tkey> (expression<func<t, tkey>> keyselector);
<summary>
Decline
</summary>
<typeparam name= "TKey" ></typeparam>
<param name= "Keyselector" ></param>
<returns></returns>
Isortable<t> desc<tkey> (global::system.linq.expressions.expression<func<t, TKey>> Keyselector);
<summary>
and then decrements
</summary>
<typeparam name= "TKey" ></typeparam>
<param name= "Keyselector" ></param>
<returns></returns>
Isortable<t> thendesc<tkey> (expression<func<t, tkey>> keyselector);
<summary>
Sorted result set
</summary>
Global::system.linq.iqueryable<t> queryable {get;}
}
Implementing the interface:
Using System;
Using System.Linq;
Using System.Linq.Expressions;
Namespace EntityFrameworks.Data.Core
{
<summary>
The collection sort implementation in the LINQ schema
</summary>
<typeparam name= "T" ></typeparam>
public class Orderable<t>: isortable<t>
{
Private iqueryable<t> _queryable;
<summary>
Sorted result set
</summary>
<param name= "Enumerable" ></param>
Public orderable (Iqueryable<t> Enumerable)
{
_queryable = enumerable;
}
<summary>
The result set after sorting
</summary>
Public iqueryable<t> queryable
{
get {return _queryable;}
}
<summary>
Increasing
</summary>
<typeparam name= "TKey" ></typeparam>
<param name= "Keyselector" ></param>
<returns></returns>
Public isortable<t> asc<tkey> (expression<func<t, tkey>> keyselector)
{
_queryable = (_queryable as iorderedqueryable<t>)
. (keyselector);
return this;
}
<summary>
and then increment
</summary>
<typeparam name= "TKey" ></typeparam>
<param name= "Keyselector" ></param>
<returns></returns>
Public isortable<t> thenasc<tkey> (expression<func<t, tkey>> keyselector)
{
_queryable = (_queryable as iorderedqueryable<t>)
. ThenBy (keyselector);
return this;
}
<summary>
Decline
</summary>
<typeparam name= "TKey" ></typeparam>
<param name= "Keyselector" ></param>
<returns></returns>
Public isortable<t> desc<tkey> (expression<func<t, tkey>> keyselector)
{
_queryable = _queryable
. OrderByDescending (keyselector);
return this;
}
<summary>
and then decrements
</summary>
<typeparam name= "TKey" ></typeparam>
<param name= "Keyselector" ></param>
<returns></returns>
Public isortable<t> thendesc<tkey> (expression<func<t, tkey>> keyselector)
{
_queryable = (_queryable as iorderedqueryable<t>)
. ThenByDescending (keyselector);
return this;
}
}
}
Encapsulation of a isortable interface