1

このタイプのモデルのリストがあります。

public class TourDude {
    public int Id { get; set; }
    public string Name { get; set; }
}

そして、ここに私のリストがあります:

    public IEnumerable<TourDude> GetAllGuides {
        get {
            List<TourDude> guides = new List<TourDude>();
            guides.Add(new TourDude() { Name = "Dave Et", Id = 1 });
            guides.Add(new TourDude() { Name = "Dave Eton", Id = 1 });
            guides.Add(new TourDude() { Name = "Dave EtZ5", Id = 1 });
            guides.Add(new TourDude() { Name = "Danial Maze A", Id = 2 });
            guides.Add(new TourDude() { Name = "Danial Maze B", Id = 2 });
            guides.Add(new TourDude() { Name = "Danial", Id = 3 });
            return guides;

        }
    }

これらのレコードを取得したい:

{ Name = "Dave Et", Id = 1 } 
{ Name = "Danial Maze", Id = 2 }
{ Name = "Danial", Id = 3 }

目標は、主に重複および重複に近いもの (ID で確認可能) を折りたたむことであり、(比較時に) 可能な限り短い値を名前として使用します。

どこから始めればよいですか?私のためにこれを行う完全なLINQはありますか?等値比較子をコーディングする必要がありますか?

編集1:

        var result = from x in GetAllGuides
                     group x.Name by x.Id into g
                     select new TourDude {
                         Test = Exts.LongestCommonPrefix(g),
                         Id = g.Key,
                     };

        IEnumerable<IEnumerable<char>> test = result.First().Test;

        string str = test.First().ToString();
4

2 に答える 2