我有一个更大/更复杂的问题,但为了简单起见,让我们考虑以下问题:
假设我在SQL 数据库中有一个名为Product的表,有两列ID (int, primary key)和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 查询。
预先感谢您的帮助。