我有一个更大/更复杂的问题,但为了简便起见,让我们考虑以下情况:
假设我有一个名为Product的表格在SQL数据库中,有两列,ID(int,主键)和Name(varchar/string)。我还有一个简单的LINQ DataContext。
我构建了一个查询并将其传递给“我的”函数。假设它类似于以下内容:(尽管可能更复杂)
IQueryable<Product> query = from p in db.Products select p;
一旦我的方法获得了这个传入的查询参数,它必须改变排序顺序,例如。
IQueryable<Product> sortedQuery = query.OrderBy(x => x.Name);
我希望把这个更通用一些,即指定要排序的字段。通常,我可以使用一个接受字符串的 switch
语句来实现。但是我想知道是否有一种直接传递参数的方法。我打算将此扩展到其他数据库表,因此这些 switch
语句会变得繁琐。
我尝试了以下内容:
IQueryable<Product> sortedQuery = query.OrderBy(x => (typeof(Product)).GetProperty(“Name”));
但是这样不起作用。我还想确保LINQ to SQL被保留,即对SQL Server进行排序。因此,如果我调试,应该从此LINQ查询中获取一个SQL查询。
提前感谢您的帮助。
IQueryable<Product> sortedQuery = query.OrderBy("Name asc");
就能达到我想要的效果了。 - O.O.