我正在运行查询以检索郊区列表。当我应用OrderBy时(我希望按字母顺序排序)
query.OrderBy(s => s.Name);
我得到以下命令:
MOUNT ADA
MOUNTAIN BAY
MOUNTAIN GATE
MOUNTAIN VIEW
MOUNT ALFRED
MOUNT BEAUTY
似乎按郊区名称忽略空格并按空格排序。 我需要怎么做才能正确订购?我认为它们应该按以下顺序排列:
MOUNT ADA
MOUNT ALFRED
MOUNT BEAUTY
MOUNTAIN BAY
MOUNTAIN GATE
MOUNTAIN VIEW
答案 0 :(得分:1)
由于各个字符组之间的空格,您的数据库设置似乎对排序顺序有影响。如果您在何处使用字符串方法Replace()
替换那些空格,则结果集可能会获得所需的结果。但是,如果没有具有特定设置的PostgreSQL 12.1数据库,就不可能知道它是否会产生所需的结果。
private static void TestOrderList()
{
var list = new List<string>();
list.Add("MOUNTAIN GATE");
list.Add("MOUNT ADA");
list.Add("MOUNTXADA");
list.Add("MOUNTAIN BAY APP TOAST");
list.Add("MOUNTAIN BAY APP ATOAST");
list.Add("MOUNTAIN BAY APPA");
list.Add("MOUNTAIN BAY");
list.Add("MOUNT ALFRED");
list.Add("MOUNTAIN VIEW");
list.Add("MOUNT BEAUTY");
var q = list.AsEnumerable().OrderBy(r => r.Replace("~", ""));
q.ToList().ForEach(s => Console.WriteLine(s));
}
免责声明:这并不是一个解决方案,而更像是一个测试案例。我选择一个Tilda,因为它的ASCII字符排序较低。
答案 1 :(得分:-2)
我没有改变任何逻辑,但是简单的迭代就给了我预期的结果。
for it, i in enumerate(foo):
if not it:
s = np.array(i[startIndex:])
else:
s += i[startIndex:]
请参阅dotnet fiddle here。
这是您想要看到的吗?