排序 - DataGridView中的LINQ vs BindingSource(这是最佳实践吗?)

时间:2013-07-02 21:54:47

标签: c# winforms visual-studio-2010 sorting linq-to-entities

我正在尝试选择最佳路线(或最佳做法)去分类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。

1 个答案:

答案 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);  
}