2017-04-12 26 views
-2
子列表項

我有這樣的名單:組列表使用LINQ

CustomerA

  • Cod123
  • Cod456

CustomerB

  • Cod456
  • Cod789

CustomerC

  • Cod888
  • COD999

我想回到這個使用LINQ:

CustomerA

  • Cod123
  • Cod456

CustomerC

  • Cod888
  • COD999

由於CustomerACustomerB具有相同的鱈魚:Cod456

我的課:

public class Customer 
{ 
    public string Name { get; set; } 
    public List<Cod> Cods { get; set; } 
} 

public class Cod 
{ 
    public string Number { get; set; } 
} 

我嘗試建設的GroupBy線。

  var customersOK = customersDuplicatedCods 
        .GroupBy(p => p.Cods.Number) 
        .Select(g => g.First()) 
        .ToList(); 
+1

你能不能給我們實際的C#類調用它呢?你的例子太模糊了,無法使用。 – Cameron

+0

好的。我給我的課程。 –

+2

聽起來好像你並不是真的希望他們分組,你只是想刪除重複。 –

回答

1

聽起來好像你並不是真的希望他們分組,你只是想刪除重複項。

This Q & A解釋瞭如何做到這一點。

基本上你將創建一個IEqualityComparer<Customer>

class DistinctItemComparer : IEqualityComparer<Customer> 
{ 
    public bool Equals(Customer x, Customer y) 
    { 
     return x.Cods.Intersect(y.Cods).Any(); 
    } 

    public int GetHashCode(Customer obj) 
    { 
     return 0; 
    } 
} 

而且通過customers.Distinct(new DistinctItemComparer())