C#List或者string[]使用Linq Distinct的忽略大小写的去重方法与技巧实例

C#开发 2014-09-01 31817阅读 0评论 0收藏 收藏本文

C#的开发中,在没有使用Linq时对List<string>的去重方法是很繁锁的,本文用一些实例来列举一下C#中使用Linq的Distinct对List<string>去重方法。 首先,在去重前,需要把字符串的首尾空格去掉:

var source = new[] {" distinct", "distinct "};
var distinctList = source.Select(s => s.Trim()).Distinct();
然后,执行去重操作:
var source = new[] {" Distinct", "distinct "};
var distinctList = source.Select(s => s.Trim())
                       .Distinct(StringComparer.InvariantCultureIgnoreCase);
当然,你也可以在去重前进行一下筛选与过滤。比如,你的字符串中有null值,希望在DISTINCT之前把null值过滤,则如下方法:
var source = new[] {" Distinct", "distinct ", null};

var distinctList = source.Where(s => !string.IsNullOrEmpty(s))
                       .Select(s => s.Trim())
                       .Distinct(StringComparer.InvariantCultureIgnoreCase);
再如果,你需要保留null值,则只需要写一个静态扩展方法即可:
public static string MyTrim(this string @this)
{
   return @this == null ? null : @this.Trim();
}
然后,在调用这个静态扩展方法:
var distinctList = source.Select(s => s.MyTrim())
                       .Distinct(StringComparer.InvariantCultureIgnoreCase);
 

转载请注明:图享网 » C#List或者string[]使用Linq Distinct的忽略大小写的去重方法与技巧实例

文章评论

获取验证码