小编5SK*_*SK5的帖子

列表<T> .Except(List <T>)未按预期工作

我有两个相同类型的列表.

一个列表是从文件加载并转换为正确类型的反序列化json对象.

另一个是由相同类型的对象创建的列表.

当我这样做时,List2.Except(List1)我希望看到一切都List2没有List1

在这种情况下,List2将拥有所有的东西,List1而不是更多,所以我希望看到Enumerable<T>大小为0的结果,但我只是看到整个,List2好像比较从未发生过.

IEnumerable<Review> newReviews = reviews.Except(savedRvReviews, new ReviewComparer());
Run Code Online (Sandbox Code Playgroud)

我也试过使用EqualityComparer下面的代码:

public class ReviewComparer : IEqualityComparer<Review>
{
    public bool Equals(Review x, Review y)
    {
        return x.ReviewID == y.ReviewID;
    }

    public int GetHashCode(Review rv)
    {
        return EqualityComparer<Review>.Default.GetHashCode(rv);
    }
}
Run Code Online (Sandbox Code Playgroud)

并得到了相同的结果.

通过LINQ查询迭代List2和搜索List1,我得到0的预期结果.

foreach (Review s in reviews)
{
    var m = from k in savedRvReviews
    where k.ReviewID == s.ReviewID
    select k;

    if …
Run Code Online (Sandbox Code Playgroud)

c# iequalitycomparer except

4
推荐指数
1
解决办法
733
查看次数

标签 统计

c# ×1

except ×1

iequalitycomparer ×1