Comment supprimer les doublons et trier

零下一度
Libérer: 2017-06-24 09:44:33
original
2369 Les gens l'ont consulté

La duplication et le tri sont des problèmes souvent rencontrés lors du processus de développement. Cet article les résumera.

Supprimer les doublons

Méthode 1 : Utiliser le distinct intégré

Le code est le suivant :

//方法1:使用默认的distinct方法//只能针对基元类型列表,对于自定义类型组合字段条件需要自定义相等比较器实现IEqualityComparer接口,比较麻烦var result1 = list.Distinct().ToList();
Copier après la connexion

Méthode 2 : Utiliser GroupBy

Le code est le suivant :

//方法2:使用GroupByvar result2 = list.GroupBy(p => new { p.BunkCode, p.BunkPrice })
    .Select(p => p.First())
    .ToList();
Copier après la connexion

Méthode 3 : Utilisez votre propre DistinctBy étendu Le code de la méthode

est le suivant :

//方法3:使用自己扩展的DistinctBy方法//利用HashSet的key不能重复的特性var result3 = list.DistinctBy(p => new { p.BunkCode, p.BunkPrice })
    .ToList();
Copier après la connexion

Veuillez vous référer au fichier complet code :

/// <summary>/// 测试类型/// </summary>public class TestDistinctClass
{public int Id { get; set; }public string BunkCode { get; set; }public double BunkPrice { get; set; }
}/// <summary>/// 测试去重/// </summary>private static void TestDistinct()
{//数据源var list = new List<testdistinctclass> 
    {new TestDistinctClass
        {
            Id= 1,
            BunkCode= "A",
            BunkPrice= 101},new TestDistinctClass
        {
            Id= 2,
            BunkCode= "B",
            BunkPrice= 102},new TestDistinctClass
        {
            Id= 3,
            BunkCode= "C",
            BunkPrice= 103},new TestDistinctClass
        {
            Id= 4,
            BunkCode= "D",
            BunkPrice= 104},new TestDistinctClass
        {
            Id= 5,
            BunkCode= "A",
            BunkPrice= 101}
    };//方法1:使用默认的distinct方法//只能针对基元类型列表,对于自定义类型组合字段条件需要自定义相等比较器实现IEqualityComparer接口,比较麻烦var result1 = list.Distinct().ToList();//方法2:使用GroupByvar result2 = list.GroupBy(p => new { p.BunkCode, p.BunkPrice })
        .Select(p => p.First())
        .ToList();//方法3:使用自己扩展的DistinctBy方法//利用HashSet的key不能重复的特性var result3 = list.DistinctBy(p => new { p.BunkCode, p.BunkPrice })
        .ToList();
}</testdistinctclass>
Copier après la connexion

En même temps, j'ai également posté la méthode d'extension :

/// <summary>/// 扩展distinct/// </summary>/// <typeparam></typeparam>/// <typeparam></typeparam>/// <param>/// <param>/// <returns></returns>public static IEnumerable<tsource> DistinctBy<tsource>(this IEnumerable<tsource> source, Func<tsource> keySelector)
{
    HashSet<tkey> seenKeys = new HashSet<tkey>();foreach (TSource element in source)
    {if (seenKeys.Add(keySelector(element)))
        {yield return element;
        }
    }
}</tkey></tkey></tsource></tsource></tsource></tsource>
Copier après la connexion

Trier

En ce qui concerne le tri, utilisez simplement l'API fournie par Linq, comme indiqué ci-dessous :

Comment supprimer les doublons et trier

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal