如何在LINQ的FindAll中忽略大小写敏感性以进行StartsWith匹配?

24

我有以下代码:

ContactList = ContactList.FindAll(p => p.DeptName.StartsWith(optAlpha.SelectedItem.Value)).ToList();

如果 DeptName="test" 并且 optAlpha.SelectedItem.Value="T",它不起作用。

我尝试使用以下代码,仍然不起作用。

ContactList = ContactList.FindAll(p => p.DeptName.ToLower().StartsWith(optAlpha.SelectedItem.Value.ToLower())).ToList();
2个回答

51

只需要使用

StartsWith(optAlpha.SelectedItem.Value, StringComparison.InvariantCultureIgnoreCase);

并且在默认比较时会忽略大小写。


@WinFXGuy,当这种情况不起作用时,语言文化之间显然存在差异。这可能不会立即显现出来,但利用不变的文化通常是最好的方法。大多数情况下,当您不关心大小写时,您也不关心文化。 - Mike Perrenoud

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接