排序-在DataGridView中LINQ与BindingSource(哪种是最佳实践?)

本文关键字:最佳 DataGridView LINQ BindingSource 排序 | 更新日期: 2023-09-27 18:20:43

我正在努力决定对DGV-Binding或LINQ进行排序的最佳途径(或最佳实践)。

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

query=查询。OrderBy(a=>a.Code);

在该方法中,我想用一个变量和"Code"替换"OrderBy"。然而,我没有正确的语法,也不知道这是否是一个好的方法。这对我来说是有意义的,这样我就不会重复代码,但LINQ是一个很好的途径吗?

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

我的设置:从数据库填充的C#数据网格视图。DataAccess项目中存在LINQ筛选。

谢谢,布莱恩。

编辑:WinForms和LINQ to EF。

排序-在DataGridView中LINQ与BindingSource(哪种是最佳实践?)

您可以尝试使用这样的反射或动态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);  
}