1、在List或者string[]中,存在重复值,但是大小写不一致,也想使用Distinct进行去重操作时,可参照如下代码:
string[] colors = { "red", "blue", "Green", "green", "Yellow", "YELLOW", "orange","REd" };
// 不区分大小写去重
//List<string>也是这样写,但对象集合(List<Color>)不能这么写,参照第2点
var uniqueColorsIgnoreCase = colors.Distinct(StringComparer.OrdinalIgnoreCase);
Console.WriteLine("不区分大小写去重,结果为:");
foreach (var color in uniqueColorsIgnoreCase)
{
Console.WriteLine(color);
}
// 区分大小写去重
var uniqueColorsCaseSensitive = colors.Distinct();
Console.WriteLine("\n区分大小写去重,结果为:");
foreach (var color in uniqueColorsCaseSensitive)
{
Console.WriteLine(color);
}
Console.ReadKey();
结果如图中所示:
2、在List对象集中,如果要根据某个属性进行去重并且不区分大小写,可参照如下代码:
public class Color
{
public int Id { get; set; }
public string ColorName { get; set; }
}
List<Color> color = new List<Color>();
color.Add(new Color() { Id = 1, ColorName = "red" });
color.Add(new Color() { Id = 2, ColorName = "green" });
color.Add(new Color() { Id = 3, ColorName = "RED" });
color.Add(new Color() { Id = 4, ColorName = "blue" });
var distinctColor = color.GroupBy(x=>x.ColorName,StringComparer.OrdinalIgnoreCase).Select(x=>x.First()).ToList();
Console.WriteLine("List对象集合不区分大小写去重,结果为:");
foreach (var item in distinctColor)
{
Console.WriteLine(item.ColorName);
}
Console.ReadKey();
结果如图所示: