2016-08-29 2 views
0

Это часть кода, который отлично работает на моей машине, но когда я пытаюсь скомпилировать решение, я получаю сообщение об ошибке: 'System .Collections.Generic.ICollection 'не содержит определения для' RemoveAll ', и не может быть найден метод расширения' RemoveAll ', принимающий первый аргумент типа' System.Collections.Generic.ICollection '(вам не хватает директивы using или сборка??)C# System.Collections.Generic.Icollection <> не содержит определения для RemoveAll

Перекресток проверял наши ссылки, и они, похоже, совпадают. У меня есть ссылка на System.Linq и EntityFramework. Я пытался очистить и перекомпилировать, но эта ошибка все еще сохраняется.

public void CleanClearinghouse() 
    { 
     this.ClearinghousePartners.RemoveAll(
      x => 
      string.IsNullOrWhiteSpace(x.ClearingHouseName) && 
      string.IsNullOrWhiteSpace(x.TradingPartnerName) && !x.StartDate.HasValue); 
    } 

У меня такое чувство, что мне не хватает ссылки на сборку или что-то подобное. Буду признателен за советы по поиску решения, но нет предложений по изменению кода.

+1

RemoveAll не существует на ICollection . Это метод в списках. –

+0

Если вы используете «Перейти к определению» на машине своего коллеги, что он находит? – hvd

+0

@ AnthonyPegram Это также метод расширения на 'ICollection ' в некоторых сборках. Без дополнительной информации мы не можем сказать, что должно быть здесь. – hvd

ответ

0

Это правда, что ICollection<T> не содержит метода RemoveAll. Класс, который имеет, имеет RemoveAll List<T>, который, вероятно, является фактическим конкретным типом вашей переменной.

Однако, если ваше свойство имеет тип ICollection, компилятор не знает, что это фактически список.

Скажи, что-то вроде этого:

public class MyClass 
{ 
    public ICollection<string> ClearinghousePartners {get;set;} 
    public MyClass() 
    { 
     ClearingHousePartners = new List<string>(); 
    } 
} 

не будет компилировать, потому что List<string> подвергается как ICollection<string>.

Один из способов фиксации - изменить определение свойства на List<T> вместо ICollection.

+0

Это была проблема с тем, как ClearinghousePartners был автогенерирован (как Icollection), и тот факт, что он был объявлен как List в конструкторе, который был несогласован. После объявления соответствия и назначения ошибка исчезла. спасибо – AidaM

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