Любой IEnumerable означает отложенное выполнение, так что вы хотите использовать это в запросе, когда ваш поиск будет подвергаться дальнейшей обработке вниз по течению (фильтрация будучи наиболее очевидный сценарий).
Если это не так, и вы действительно хотите, чтобы вы не перечислили коллекцию более одного раза, вы сделали бы ее доступной как IList, ISet или ICollection. IList будет предпочтительнее, если вы захотите убедиться, что коллекция может иметь дубликаты, тогда как ISet предпочтительнее, если вы хотите, чтобы в наборе не было обмановки (заданное поведение было более полезным в моем опыте).
Как IList, так и ISet являются ICollections, который раскрывает поведение коллекции костей, таких как Count. В контексте NHib вы можете увидеть это в реализациях, где используются коллекции Iesi вместо .net HashSet, но это скорее связано скорее с тем, что когда-то не было .net HashSet, а затем произошло отставание в способности NHib использовать его легко (но NHib мог бы иметь возможность отображать ICollection в набор Iesi).
НТН
Я бы использовал 'ICollection' для мешков. 'IList ' подразумевает, что есть заказ и индекс, который это не относится к мешкам. –
cremor
Не могли бы вы расширить IList, не поддерживающий двунаправленные отношения. У нас есть все наши коллекции, которые были показаны как IEnumerable как свойство и IList в качестве области поддержки, и у нас нет НИКАКИХ проблем с двунаправленными отношениями, что так всегда , – epitka