c# - LINQ Distinct 运算符,忽略大小写?

标签 c# linq string comparison distinct

给定以下简单示例:

    List<string> list = new List<string>() { "One", "Two", "Three", "three", "Four", "Five" };

    CaseInsensitiveComparer ignoreCaseComparer = new CaseInsensitiveComparer();

    var distinctList = list.Distinct(ignoreCaseComparer as IEqualityComparer<string>).ToList();

看起来 CaseInsensitiveComparer 实际上并未用于进行不区分大小写的比较。

换句话说,distinctList 包含与 list 相同数量的项目。相反,我希望,例如,“三”和“三”被认为是相等的。

我是不是遗漏了什么或者这是 Distinct 运算符的问题?

最佳答案

StringComparer 可以满足您的需求:

List<string> list = new List<string>() {
    "One", "Two", "Three", "three", "Four", "Five" };

var distinctList = list.Distinct(
    StringComparer.CurrentCultureIgnoreCase).ToList();

(或不变量/序数等,取决于您比较的数据)

关于c# - LINQ Distinct 运算符,忽略大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/283063/

相关文章:

c# - 消息队列系统

c# - 什么时候使用代码块?

c# - 使用基于子项的 Lambda/Linq 过滤器父集合

c# - LINQ multiple join IQueryable 修改结果选择器表达式

c# - 使用 SQL 查询 Web 服务

c++ - 在 C++ 中将 bool 转换为文本

c# - 使用 mvvm 在 xamarin 上绑定(bind)数据收集

c# - Entity Framework Linq、Left Join 和 Group with SUM 和 Count

java - 在字符串中插入变量

javascript - 在 javascript 中打乱一个单词