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