有没有办法用特定的CompareInfo创建CultureInfo?

时间:2016-06-27 11:40:02

标签: c# datatable cultureinfo

我需要将默认的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

0 个答案:

没有答案