簡體   English   中英

從列表中獲取不同的對象

[英]Getting distinct objects from a list

編輯:問題不在於不同的方法,而在於標題的編碼方式。 與 StringComparison.InvariantCultureIgnoreCase 比較返回 true。 問題關閉。 這是我的代碼:

var b = ret.DistinctBy(x => new { x.Title, x.Type }).ToList();

在此處輸入圖片說明

當我用我的輸入運行這條線時,我得到了這個。 我想根據標題和類型消除重復項。 你能告訴我我哪里出錯了嗎? 根據我的比較,這兩個對象不是相同的嗎?

謝謝

編輯:做了更多的調試。 名字好像不一樣。

var z = ret[0].Title == ret[1].Title;

用文本比較器檢查。 這是相同的。 任何想法為什么? 我從 Kindle 閱讀了 MyClippings。 將測試他們是否以不同的方式對 Title 進行編碼。

您能否分享更多代碼,即使用下面我的示例的類可以正常工作:

    public class Test {
        public string Title {get;set;}
        public Type Type {get;set;}
    }

    public enum Type {
        Kindle
    }

    public static void Main()
    {
        var ret = new List<Test> {
            new Test {
                Title = "Book A",
                Type = Type.Kindle
            },
            new Test {
                Title = "Book A",
                Type = Type.Kindle
            }
        };
        var b = ret.DistinctBy(x => new { x.Title, x.Type }).ToList();

        b.ForEach(x => Console.WriteLine(x.Title));
    }

輸出:
Book A

可運行版本https : //dotnetfiddle.net/gi8z7j

如果您將第二Book A更改為Book B它將輸出:

Book A
Book B

暫無
暫無

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

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