我正在尝试选择最佳路线(或最佳做法)去分类DGV - 绑定或LINQ。
我想要做的是创建一个从用户接收parms的方法(在这种情况下,它将识别标题的鼠标点击和排序方向 - 如果已排序)。然后该方法将采用parms并在LINQ语句中使用它们。
query = query.OrderBy(a => a.Code);
在该方法中,我想用变量替换“OrderBy”,以及“Code”。但是,我没有正确的语法,也不知道这是否是一个很好的方法。这对我来说是有意义的,所以我不重复代码,但LINQ是一条好路线吗?
var sortOrder = "OrderByDescending";
var sortColumn = "Code";
query = query.sortOrder(a => a.sortColumn);
我的设置: 从数据库填充的C#dataGridView。 LINQ过滤存在于DataAccess项目中。
谢谢你, 布赖恩。
编辑:WinForms和LINQ to EF。
答案 0 :(得分:1)
您可以尝试使用这样的反射或Dynamic LINQ
var sortOrder = "OrderByDescending";
var sortColumn = "Code";
if(sortOrder =="OrderByDescending")
query = query.OrderByDescending(a => GetPropertyValue(a,sortColumn));
else
query = query.OrderBy(a => GetPropertyValue(a,sortColumn));
private static object GetPropertyValue(object obj, string property)
{
System.Reflection.PropertyInfo propertyInfo=obj.GetType().GetProperty(property);
return propertyInfo.GetValue(obj, null);
}