Linq-запрос по коллекции ISet - PullRequest
       0

Linq-запрос по коллекции ISet

1 голос
/ 23 августа 2011

У меня есть клиент со списком контактов.Этот список является коллекцией ISet.Я не могу сделать запрос Linq на это.Не могли бы вы помочь мне в этом?

Спасибо,

public class Customer
{
    public virtual Iesi.Collections.Generic.ISet<Contact> Contacts { get; set; }
}

Customer customer = session.Get(id);
customer.Contacts = // Error - customer.Contacts.Where(x => x.Id != contactId);

Обновление 1

Попробовал: from p in customer.Contacts.AsEnumerable() where p.Id != id select p; Ошибка на where.System.Collections.Generic.IEnumerable 'to' Iesi.Collections.Generic.ISet '.Существует явное преобразование (вам не хватает приведения?)

Ответы [ 2 ]

4 голосов
/ 23 августа 2011

Я считаю, что эта проблема не имеет никакого отношения к IESI ISet , реализующему IEnumerable (он делает , кстати), но вместо этого на ответ указывает исключение приведения, упомянутое в ' обновить "к исходному сообщению.

Линия ...

customer.Contacts = customer.Contacts.Where(x => x.Id != contactId);

... фактически (неправильно) пытается присвоить IEnumerable (результат оператора .Where (...)) свойству типа ISet (свойство .Contacts в Класс клиента).

Я сильно подозреваю, что с этой строкой все будет в порядке ...

IEnumerable<Contact> contacts = customer.Contacts.Where(x => x.Id != contactId);

... демонстрирует, что оператор .Where (...) прекрасно работает на IESI ISet , но что .Where (...) возвращает (конечно) IEnumerable .

Чтобы это работало, вам нужно преобразовать результат вашей операции .Where (...) из IEnumerable в ISet , прежде чем пытаться присвоить его свойству customer.Contacts.

0 голосов
/ 23 августа 2011

Я предполагаю, что ISet равен System.Collections.Generic.ISet<T>.

Добавить оператор использования для System.Linq и, возможно, ссылку на System.Core.dll.


Если это что-то ещеКак может указывать корневое пространство имен Iesi, можете ли вы использовать стандарт ISet<T>?Или вы можете как-то преобразовать свой ISet<T> в IEnumerable<T>?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...