0

编辑:问题不在于不同的方法,而是标题的编码方式。与 StringComparison.InvariantCultureIgnoreCase 比较返回 true。问题关闭。这是我的代码:

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

在此处输入图像描述

当我用我的输入运行这条线时,我得到了这个。我想根据标题和类型消除重复项。你能告诉我哪里出错了吗?根据我的比较,这两个对象不一样吗?

谢谢

编辑:做了更多的调试。好像名字不一样。

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

用文本比较器检查。这是相同的。任何想法为什么?我从 Kindle 阅读了 MyClippings。将测试他们是否以不同的方式编码标题。

4

1 回答 1

1

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

    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 ABook B它输出:

Book A
Book B
于 2020-03-30T21:26:14.337 回答