前言
前幾天的一個數據列表中我用了Linq GroupBy 和OrderBy。 排序在本機正常使用,發到測試后排序死活不對,很是郁悶,總以為是程序問題。於是請教了另外一個同事。有了以下的答案。
問題原因和解決方法
因為服務器裝的是英文版操作系統,沒有中文包,所以碰見中文排序無法識別,所以使用OrderBy時需要單獨處理下。
CultureInfo culture = CultureInfo.GetCultureInfo("zh-cn"); List<TeamDto> teamDtos = teams .GroupBy(x => new { x.TestId, x.TestName }) .Select(g => new TeamDto() { TestID = g.Key.TestId, Test = g.Key.TestName, Teams = g.ToList() }) .OrderBy(t=>t.Test,StringComparer.Create(culture,true)) .ToList();