我需要将默认的StringComparison设置为StringComparison.InvariantCultureIgnoreCase
。
当搜索DataTable时,'s'和'ß'被处理,因为它们是相同的。我不想要这种行为;我需要一个有序的比较。
DataTable table = new DataTable();
table.Locale = new CultureInfo(1031); // LCID 1031 is the default in my country (germany)
table.Columns.Add("text");
table.Rows.Add("ss");
table.Rows.Add("ß");
int rowcount = table.Select("text = 'ss'").Length; // returns: 2
Assert.AreEqual(1, rowcount); // exception
table.DefaultView.Sort = "text";
rowcount = table.DefaultView.FindRows("ß").Length; // returns: 2
Assert.AreEqual(1, rowcount); // exception
或者是否有使用OrdinalIgnoreCase的默认文化?我尝试了LCID 7,这是中立的德国文化,但这仍然不起作用。
编辑1: 我猜没有文化定义'ss'不等于'ß':
int count = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where((item) => item.CompareInfo.Compare("ss", "ß") != 0)
.Count(); // count = 0