1

我正在尝试确定对 DGV 进行排序的最佳路线(或最佳实践) - 绑定或 LINQ。

我想做的是创建一个从用户接收参数的方法(在这种情况下,它将识别标题的鼠标单击和排序方向 - 如果已排序)。然后该方法将获取参数并在 LINQ 语句中使用它们。

query = query.OrderBy(a => a.Code);

在该方法中,我想用变量以及“代码”替换“OrderBy”。但是,我没有正确的语法,也不知道这是否是一个好方法。这对我来说很有意义,所以我不会重复代码,但是 LINQ 是一条好路线吗?

        var sortOrder = "OrderByDescending";
        var sortColumn = "Code";
        query = query.sortOrder(a => a.sortColumn);

我的设置:从数据库填充的 C# dataGridView。LINQ 筛选存在于 DataAccess 项目中。

谢谢你,布赖恩。

编辑:WinForms 和 LINQ to EF。

4

1 回答 1

1

您可以尝试使用这样的反射或动态 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);  
}  
于 2013-07-03T01:14:42.250 回答