C# 按条件订购

C# 按条件订购,c#,entity-framework,linq,C#,Entity Framework,Linq,我想得到顶部有“限制”的记录。 我的问题是: var records = (from entry in db.Table1 orderby entry.Always_Prohibited select new { RowID = entry

我想得到顶部有“限制”的记录。 我的问题是:

var records = (from entry in db.Table1
                    orderby entry.Always_Prohibited                              
                    select new
                           {
                                 RowID = entry.RowID,
                                 VehicleMake = entry.Make,
                                 VehicleModel = entry.Model,
                                 Restricted = (entry.Always_Prohibited == null || entry.Always_Prohibited == "False") ? "Restricted" : "Not Restricted"
                           }).ToList();
我尝试了Orderby,但它不起作用,因为entry.Always\u Probibited是一个字符串字段。
请建议我。

如果只有两个值,只需按降序排列即可:

from entry in db.Table1
orderby entry.Always_Prohibited descending
如果有更多,请为字符串指定整数值:

from entry in db.Table1
orderby entry.Always_Prohibited=="A" ? 0 : entry.Always_Prohibited=="B" ? 1 : 2 // and so on

另外,字符串是在数据库中存储状态的一种非常糟糕的方式。您应该重新设计它,将其存储为定义良好的整数(最好在主查找表中作为外键,即强类型枚举)。

用户然后在下面给出代码。这对你有帮助

var records = (from entry in db.Table1.AsQueryable();
                orderby entry.Always_Prohibited                              
                select new
                       {
                             RowID = entry.RowID,
                             VehicleMake = entry.Make,
                             VehicleModel = entry.Model,
                             Restricted = (entry.Always_Prohibited == null || entry.Always_Prohibited == "False") ? "Restricted" : "Not Restricted"
                       }).ToList();
可能重复的