LINQ multiple order by
I have created a function that has the follwing parameter:
List<Expression<Func<CatalogProduct, bool>>> orderBy = null
This parameter is optional, If it is filled it should create a order by and than by constuction for me, so that I can order the result on the SQL server.
I tried:
IOrderedQueryable temp = null;
foreach (Expression<Func<CatalogProduct, bool>> func in orderBy)
{
if (temp == null)
{
temp = catalogProducts.OrderBy(fu开发者_JAVA百科nc);
}
else
{
temp = temp.ThanBy(func);
}
}
But the than By is not reconized. Does someone know how I can solve this problem?
I changed it to .ThenBy() but this is only allowed directly after the .OrderBy() and not on a IOrderedQueryable
so temp = catalogProducts.OrderBy(func).ThenBy(func); is allowed but temp = catalogProducts.OrderBy(func); temp = temp.ThenBy(func); issn't
Any other suggestions?
Two problems; firstly, ThanBy
should be ThenBy
; secondly, ThenBy
is only available on the generic type, IOrderedQueryable<T>
.
So change to:
IOrderedQueryable<CatalogProduct> temp = null;
foreach (Expression<Func<CatalogProduct, bool>> func in orderBy) {
if (temp == null) {
temp = catalogProducts.OrderBy(func);
} else {
temp = temp.ThenBy(func);
}
}
and you should be sorted.
try this
IOrderedQueryable temp = null;
foreach (Expression<Func<CatalogProduct, bool>> func in orderBy)
{
if (temp == null)
{
temp = catalogProducts.OrderBy(func);
}
else
{
temp = temp.OrderBy(func);
}
}
foreach (Expression<Func<CatalogProduct, bool>> func in orderBy)
{
catalogProducts = catalogProducts.OrderBy(func);
}
This will be OK.
精彩评论