簡體   English   中英

從不同的字符串中獲取前6個字符

[英]Get First 6 character from string which is distinct

string[] arr = { "abcdefXXX872358", "abcdef200X8XXX58", "abcdef200X872359", "6T1XXXXXXXXXXXX11", "7AbcdeHA30XXX541", "7AbcdeHA30XXX691" };

我怎樣才能從上面得到不同的數字,其中前6個字符必須是不同的結果將是

abcdefXXX872358

6T1XXXXXXXXXXXX11

7AbcdeHA30XXX541

我嘗試這樣的事情

var dist = (from c in arr
            select c).Select(a => a.Substring(0, 5)).Distinct();

這給了我前5個字符,但我想要整個字符串

對第一個字符進行分組,並獲得每個組中的第一個字符串:

IEnumerable<string> firstInGroup =
   arr
   .GroupBy(s => s.Substring(0, 6))
   .Select(g => g.First());

我認為最好的方法是實現IEqualityComparer,如List.Distinct()上的重載所暗示的那樣

    public class firstXCharsComparer : IEqualityComparer<string>
    {
        private int numChars;
        public firstXCharsComparer(int numChars)
        {
            this.numChars = numChars;
        }

        public bool Equals(string x, string y)
        {
            return x.Substring(0, numChars) == y.Substring(0, numChars);
        }

        public int GetHashCode(string obj)
        {
            return obj.Substring(0, numChars).GetHashCode();
        }
    }
    static void Main(string[] args)
    {
        string[] arr = { "abcdefXXX872358", "abcdef200X8XXX58", "abcdef200X872359", "6T1XXXXXXXXXXXX11", "7AbcdeHA30XXX541", "7AbcdeHA30XXX691" };

        var result = arr.ToList().Distinct(new firstXCharsComparer(6));
        result.Count();
    }

暫無
暫無

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

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