How to use LINQ Distinct() with multiple fields

前端 未结 9 1377
借酒劲吻你
借酒劲吻你 2020-11-30 01:32

I have the following EF class derived from a database (simplified)

class Product
{ 
     public string ProductId;
     public string Product         


        
9条回答
  •  广开言路
    2020-11-30 02:24

    the solution to your problem looks like this:

    public class Category {
      public long CategoryId { get; set; }
      public string CategoryName { get; set; }
    } 
    

    ...

    public class CategoryEqualityComparer : IEqualityComparer
    {
       public bool Equals(Category x, Category y)
         => x.CategoryId.Equals(y.CategoryId)
              && x.CategoryName .Equals(y.CategoryName, 
     StringComparison.OrdinalIgnoreCase);
    
       public int GetHashCode(Mapping obj)
         => obj == null 
             ? 0
             : obj.CategoryId.GetHashCode()
               ^ obj.CategoryName.GetHashCode();
    }
    

    ...

     var distinctCategories = product
         .Select(_ => 
            new Category {
               CategoryId = _.CategoryId, 
               CategoryName = _.CategoryName
            })
         .Distinct(new CategoryEqualityComparer())
         .ToList();
    

提交回复
热议问题