我有一个带有联系人列表的客户。此列表是一个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上的错误”
到“ Iesi.Collections.Generic.ISet”。
 存在显式转换(您是否缺少演员表?)

最佳答案

我相信这个问题与实现IEnumerable 的IESI ISet 没有关系(确实如此,BTW),但是答案是由对原始帖子“更新”中提到的强制转换异常指出的。

线...

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


...实际上(不正确地)试图将IEnumerable (.Where(...)运算符的结果)分配给ISet 类型的属性(Customer类的.Contacts属性) 。

我强烈怀疑这条线会很好...

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


...表明.Where(...)运算符在IESI ISet 上工作正常,但.Where(...)返回的(当然)是IEnumerable 。

为此,您需要将.Where(...)操作的结果从IEnumerable 转换为ISet ,然后再尝试将其分配给customer.Contacts属性。

关于c# - 对ISet集合的Linq查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7160450/

10-11 08:51