2015-12-17 1 views
2

У меня есть два спискапересекаются в двух списках результатов в пустом списке

List<clsEntity> usersWithNPIRCodingPermission // It has count 159 
List<clsEntity> usersWithRaiseReq // It has count 219 

При выполнении пересекаются на них (есть 55 записей, но мой ниже линии становится пустой список)

List<clsEntity> users = usersWithRaiseReq.Intersect(usersWithNPIRCodingPermission).ToList(); 

Почему результирующий список users пуст?

+3

Это действительно правильный код? Вы говорите о пересечении, но вы используете метод 'Except', а не' Intersect'. –

+6

Выполняет ли 'clsEntity'' IEquatable '? Если нет, это будет только 'ReferenceEquals' для каждого элемента. Вы должны обязательно опубликовать [mcve], чтобы мы могли помочь. –

+0

Являются ли дополнительные 60 экземпляров только повторами других экземпляров в списке? – David

ответ

4

Вам необходимо реализовать сопоставитель равенства для вашего типа, если он не является примитивным, например. int и т.д ...

public class UsersComparer : IEqualityComparer<clsEntity> 
{ 
    public bool Equals(clsEntity x, clsEntity y) 
    { 
     if (Object.ReferenceEquals(x, y)) return true; 

     if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null)) 
      return false; 

     return x.ID == y.ID; // or whatever you use to determine equality 
    } 

    public int GetHashCode(clsEntity x) 
    { 
     if (Object.ReferenceEquals(x, null)) return 0; 

     return x.ID.GetHashCode(); 
    } 
} 

Использование:

List<clsEntity> users = usersWithRaiseReq.Except(
     usersWithNPIRCodingPermissionn, new UsersComparer()).ToList(); 
+0

Это сработало ... теперь его получение пересекается из двух списков ... Большое вам спасибо за вашу помощь –

+0

Если это ответит на ваш вопрос, подумайте о [принимайте его как ответ] (https://www.google.co.uk/ URL? са = т & RCT = J & д = & ESRC = s & источник = веб & кд = 1 & CAD = RJA & uact = 8 & вед = 0ahUKEwjd2r71k-PJAhUKuxQKHQHqBuMQFggcMAA & URL = HTTP% 3A% 2F% 2Fmeta.stackexchange.com% 2Fquestions% 2F5234% 2Fhow-делает-прием-ан-ответа- work & usg = AFQjCNFG4vSQJ4mHJvESivMd4xw8UphR_Q & bvm = bv.110151844, d.ZWU) – DGibbs

+0

Как только я получу 15 репутаций, я буду отмечать его как ответ, поскольку он не позволяет мне отмечать на данный момент .. спасибо за вашу помощь снова –

Смежные вопросы