Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据排序通用Datagridview_C#_Winforms_Linq_Datagridview - Fatal编程技术网

C# 数据排序通用Datagridview

C# 数据排序通用Datagridview,c#,winforms,linq,datagridview,C#,Winforms,Linq,Datagridview,我在这里找到了一个关于使用通用列表对数据网格进行排序的很好的示例,但它似乎非常慢,我只处理列表中的2000条记录 它似乎也不能很好地处理排序中的字符串,任何人都不知道如何使用下面的linq获得更好的结果 我在winforms中使用datagridview,我现在没有winforms,但不是我选择的现有应用程序 private void dgProducts_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs

我在这里找到了一个关于使用通用列表对数据网格进行排序的很好的示例,但它似乎非常慢,我只处理列表中的2000条记录

它似乎也不能很好地处理排序中的字符串,任何人都不知道如何使用下面的linq获得更好的结果

我在winforms中使用datagridview,我现在没有winforms,但不是我选择的现有应用程序

 private void dgProducts_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
 {
     var compareList = (dgProducts.DataSource as List<StockM>);
     string strColumnName = dgProducts.Columns[e.ColumnIndex].Name;
     SortOrder strSortOrder = getSortOrder(e.ColumnIndex);

     if (strSortOrder == SortOrder.Ascending)
     {
         _allstock = _allstock.OrderBy(x => typeof(StockM).GetProperty(strColumnName).GetValue(x, null)).ToList();
      }
       else
      {
         compareList = compareList.OrderByDescending(x => typeof(StockM).GetProperty(strColumnName).GetValue(x, null)).ToList();
      }

    dgProducts.DataSource = compareList;
    dgProducts.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = strSortOrder;

}
private void dgProducts\u ColumnHeaderMouseClick(对象发送者,DataGridViewCellMouseEventArgs e)
{
var compareList=(dgProducts.DataSource作为列表);
字符串strColumnName=dgProducts.Columns[e.ColumnIndex].Name;
SortOrder strSortOrder=getSortOrder(如ColumnIndex);
if(strSortOrder==排序器升序)
{
_allstock=\u allstock.OrderBy(x=>typeof(StockM).GetProperty(strColumnName).GetValue(x,null)).ToList();
}
其他的
{
compareList=compareList.OrderByDescending(x=>typeof(StockM).GetProperty(strColumnName).GetValue(x,null)).ToList();
}
dgProducts.DataSource=比较列表;
dgProducts.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection=strSortOrder;
}

如果你看一下我的代码,就会发现我的列表设置不正确

private void dgProducts_ColumnHeaderMouseClick(object sender, 
DataGridViewCellMouseEventArgs e)
{
 var compareList = (dgProducts.DataSource as List<StockM>);
 string strColumnName = dgProducts.Columns[e.ColumnIndex].Name;
 SortOrder strSortOrder = getSortOrder(e.ColumnIndex);

 if (strSortOrder == SortOrder.Ascending)
 {
     _allstock = _allstock.OrderBy(x => typeof(StockM).GetProperty(strColumnName).GetValue(x, null)).ToList();
  }
   else
  {
     compareList = compareList.OrderByDescending(x => typeof(StockM).GetProperty(strColumnName).GetValue(x, null)).ToList();
  }

dgProducts.DataSource = compareList;
dgProducts.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = strSortOrder;

}
private void dgProducts\u columnHeaderMouseClack(对象发送者,
DataGridViewCellMouseEventArgs(e)
{
var compareList=(dgProducts.DataSource作为列表);
字符串strColumnName=dgProducts.Columns[e.ColumnIndex].Name;
SortOrder strSortOrder=getSortOrder(如ColumnIndex);
if(strSortOrder==排序器升序)
{
_allstock=\u allstock.OrderBy(x=>typeof(StockM).GetProperty(strColumnName).GetValue(x,null)).ToList();
}
其他的
{
compareList=compareList.OrderByDescending(x=>typeof(StockM).GetProperty(strColumnName).GetValue(x,null)).ToList();
}
dgProducts.DataSource=比较列表;
dgProducts.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection=strSortOrder;
}