我有一个更大/更复杂的问题,但是为了简单起见,我们考虑以下几点:
让我们说,我有表中的SQL数据库称为产品 ,有两列,ID(INT,主键)和名称 (VARCHAR /串)。 我也有一个简单的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查询。
预先感谢您的帮助。