【发布时间】:2011-06-25 13:56:14
【问题描述】:
我有一个这样的域类:
public class DomainClass
{
public virtual string name{get;set;}
public virtual IList<Note> Notes{get;set;}
}
我将如何从IList<Note> 中删除项目?如果它是一个列表,我将能够做到这一点,但它必须是一个 IList,因为我使用 Nhibernate 作为我的持久层。
理想情况下,我希望在我的域类中使用这样的方法:
public virtual void RemoveNote(int id)
{
//remove the note from the list here
List<Note> notes = (List<Note>)Notes
notes.RemoveAll(delegate (Note note)
{
return (note.Id = id)
});
}
但我不能将IList 转换为List。有没有更优雅的方法来解决这个问题?
【问题讨论】:
-
有趣的问题,你不想转换为具体类型,因为你以前不知道它。我想如果你循环所有元素会起作用,但会很慢。我不知道答案,我想知道使用 LINQ 查询选择要删除的节点是否会有所帮助,然后在运行时使用的每个具体类都会根据列表类型(排序、排序与否)更快或更慢地执行 linq 查询。 .
-
你有相同ID的笔记吗?如果不是,您可能想改用
IDictionary<int, Note> -
@Magnus 不,ID 将是唯一的