C# WPF数据网格/列表自定义排序和标准

C# WPF数据网格/列表自定义排序和标准,c#,list,wpfdatagrid,C#,List,Wpfdatagrid,好的,我在列表中有一些数据,然后绑定到DataGrid。数据与此相似 Code Product Weight 008 811 10.0 008 842 12.0 I008 852 8.0 008 N/A 0.0 I008 ALL Version 0.516 VAL N/A 1.0 如何根据以下规则对其进行排序 产品中任何=不适用的内容都必须位于

好的,我在列表中有一些数据,然后绑定到DataGrid。数据与此相似

    Code Product     Weight
    008  811         10.0
    008  842         12.0
    I008 852         8.0
    008  N/A         0.0
    I008 ALL Version 0.516
    VAL  N/A         1.0
如何根据以下规则对其进行排序

产品中任何=不适用的内容都必须位于顶部 任何以字母I开头的代码都会进入底部 其他的就按代码排序 所以上表是这样的

    Code Product     Weight
    008  N/A         0.0
    VAL  N/A         1.0
    008  811         10.0
    008  842         12.0
    I008 852         8.0
    I008 ALL Version 0.516

不必费尽周折,也不必编写自己的排序算法,我只需预先查询根据您最终想要呈现的条件排序的数据

如果来自MySQL,您可以使用If。。。如果来自其他服务器,如SQL Server,则可能必须在/ELSE结束时替换为用例

SELECT 
      pr.Code,
      pr.Product,
      pr.Weight
   from
      ProductTable pr
   order by
      if( pr.Product = 'N/A', 1, 2 ),
      if( LEFT( pr.Code, 1 ) = 'I', 2, 1 ),
      pr.Code

您可以修改自己的排序算法

通常C有几个可以实现的接口,如IComparable或IEquatable,这些接口由Array.Sort等方法使用,用于对数组或集合进行排序

干杯,
Felipe

即使使用了由我订购的软件,我想我还是要做一些胡闹。由于它来自一个SQL数据库,我想我可以向它添加另一列,称它为priority或其他什么,然后在数据库中循环并将Product=N/A的任何内容标记为1,将“I”标记为3,然后将其他任何内容标记为2。然后只需在优先级字段中按排序即可。@Gazlar,您可以在SQL中进行复杂排序,您使用的是哪种SQL。。。MySQL,SQL Server,?我使用SQLCE作为数据库,Linq做任何查询等。有没有Linq的方法来做你写的DRapp?对不起,我在那个部门帮不了你。。。我不知道。。。然而