Steve Jobs Steve Jobs - 5 months ago 21
SQL Question

how to order by a dynamic column name in EntityFramework?

I am trying to get following code working , This was working fine for MSSQL , but since i changed to use mySql it is not working

records.Content = db.areas
.Where(x => x.Name.Contains(filter)))
.OrderBy("dated desc")
.ToList();


I get the error " Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information."

string colName = "datedD" ;


how to order by depneding on colName variable ?

`

Answer

Try this

string filterString = "dated";
bool isAscSorting = false;

Func<dynamic, dynamic> orderingFunction = i =>
                                filterString == "dated" ? i.dated :
                                filterString == "something" ? i.columnx : "";

records.Content = (isAscSorting) ?
                      db.areas
                         .Where(x =>   x.Name.Contains(filter)))
                         .OrderBy(orderingFunction) 
                         .ToList()
                   :
                        db.areas
                         .Where(x =>   x.Name.Contains(filter)))
                         .OrderByDescending(orderingFunction) 
                         .ToList();