簡體   English   中英

如何使用自定義比較器在C#中按字母順序對元素進行排序

[英]How to use a custom comparer to sort elements alphabetically in C#

我是C#的新手。 我正在嘗試編寫一個自定義比較器,該比較器按城市名稱的字母順序對CityInfo對象的列表進行排序。

 public class CityInfoComparer 
    {
        private readonly IComparer<string> _baseComparer;

        public CityInfoComparer(IComparer<string> baseComparer) 
        {
            _baseComparer = baseComparer;
        }

        public int Compare(CityInfo city1, CityInfo city2)
        {
            return _baseComparer.Compare(city1.CityName, city2.CityName);

        }
    }


public class CityList
    {
        public List<CityInfo> CityInfos { get; set; }

        public void Sort(CityInfo city1, CityInfo city2)
        {
            CityInfos.Sort(new CityInfoComparer(StringComparer.CurrentCulture));

            //CityInfos.Sort()
        }

    }

我在此行出現錯誤:

CityInfos.Sort(new CityInfoComparer(StringComparer.CurrentCulture));

無法從CityInfo轉換為Systems.Generic.Collections.Icomparer

您應該繼承自IComparer,請參見下文:

public class CityInfoComparer:IComparer<CityInfo>
{
    private readonly IComparer<string> _baseComparer;

    public CityInfoComparer(IComparer<string> baseComparer)
    {
        _baseComparer = baseComparer;
    }

    public int Compare(CityInfo city1, CityInfo city2)
    {
        return _baseComparer.Compare(city1.CityName, city2.CityName);
    }
}


public class CityList
{
    public List<CityInfo> CityInfos { get; set; }

    public void Sort()
    {
        CityInfos.Sort( new CityInfoComparer(StringComparer.CurrentCulture));
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM