C# 在Gridview行中按自定义订单

C# 在Gridview行中按自定义订单,c#,gridview,C#,Gridview,我想按如下方式订购我的gridview 产品名称 FL - STATEWIDE (Primary) FL - LEE COUNTY FL - OKALOOSA COUNTY MS - STATEWIDE (Primary) MS - KENT COUNTY 我不能按产品订货。因为如果产品名称中包含单词primary,那么它应该放在第一位 我怎样才能做到这一点 一旦读入数据表,就可以使用LINQ对其进行排序 dtbl = ( from i

我想按如下方式订购我的gridview

产品名称

FL - STATEWIDE (Primary)

FL - LEE COUNTY

FL - OKALOOSA COUNTY

MS - STATEWIDE (Primary)

MS - KENT COUNTY
我不能按产品订货。因为如果产品名称中包含单词primary,那么它应该放在第一位


我怎样才能做到这一点

一旦读入数据表,就可以使用LINQ对其进行排序

        dtbl = (
                 from item in dtbl.AsEnumerable()
                 select item
               ).OrderBy(x => x.Field<string>("Product Name").Contains("Primary") ? 0 : 1).
                 ThenBy(x => x.Field<string>("Product Name")).CopyToDataTable();
dtbl=(
来自dtbl.AsEnumerable()中的项
选择项
).OrderBy(x=>x.Field(“产品名称”)。包含(“主”)?0:1)。
然后是(x=>x.Field(“产品名称”)).CopyToDataTable();
输出

佛罗里达州-全州(小学)

MS-全州(小学)

佛罗里达州李县

佛罗里达-奥卡洛萨县

MS-肯特县

如果您需要先按州订购(主要在顶部)

dtbl=(
来自dtbl.AsEnumerable()中的项
选择项
).OrderBy(x=>x.Field(“产品名称”).Substring(0,2))
然后(x=>x.Field(“产品名称”)。包含(“主”)?0:1)。
然后是(x=>x.Field(“产品名称”)).CopyToDataTable();
输出

佛罗里达州-全州(小学)

佛罗里达州李县

佛罗里达-奥卡洛萨县

MS-全州(小学)


MS-肯特县

您能否根据此条件添加上述产品的预期订单:
如果产品名称中包含单词primary,则应将其放在第一位。
?是,佛罗里达州-全州(primary)is包含单词primary,因此它首先出现,然后是FL-LEE县和FL-OKALOOSA县。您可以告诉我们数据来源是什么。。。表,集合列表。。。等等@ChrisHammond这是数据table@Golda数据实际存储在哪里。。。如果是在数据库中,而不是我下面的答案,在datatable上使用LINQ,您能不能不在SQL Select语句中对其排序?我面临一个问题MS-全州(主要)下一个值是MISSISSIPPI。如何做到这一点。它首先显示MISSISSIPPI next MS-STATEWIDE(Primary)@Golda,除非名称中存在某种一致性,否则基本排序例程将无法工作,因此您需要创建一个自定义
        dtbl = (
                 from item in dtbl.AsEnumerable()
                 select item
               ).OrderBy(x => x.Field<string>("Product Name").Substring(0,2))
                 ThenBy(x => x.Field<string>("Product Name").Contains("Primary") ? 0 : 1).
                 ThenBy(x => x.Field<string>("Product Name")).CopyToDataTable();