你如何找到条件,如&&

时间:2011-12-12 21:31:39

标签: c# asp.net string

假设你有一个List l_mur = new List();

然后填写清单。

然后根据您要删除某些值的条件而不重新查询......

l_mur.RemoveAt(l_mur.FindIndex(f => (f.xid == tmur.xid && f.sid == tmur.sid && f.mid == tmur.mid && f.bid == tmur.bid)));

但是,我在这里使用的代码似乎不起作用。它告诉我索引超出范围,但如果我只是在寻找真正存在的东西,它怎么能超出范围。

3 个答案:

答案 0 :(得分:3)

List<T>.FindIndex()如果找不到匹配项,则返回-1 - 超出List<T>.RemoveAt()的范围。

另请注意,FindIndex()仅根据您的谓词返回第一个出现次数的索引 - 如果有多个匹配项,您只能删除其中的第一个匹配项用你当前的方法。

基于谓词进行删除的更好方法是RemoveAll()

l_mur.RemoveAll(f => (f.xid == tmur.xid && f.sid == tmur.sid && f.mid == tmur.mid && f.bid == tmur.bid));

答案 1 :(得分:1)

最好将列表过滤到列表的新实例:

var l_mur = l_mur.Where(f => (f.xid != tmur.xid || f.sid != tmur.sid || f.mid != tmur.mid || f.bid != tmur.bid));

答案 2 :(得分:0)

使用此代码:

l_mur.Remove(l_mur.Find(f => (f.xid == tmur.xid && f.sid == tmur.sid && f.mid == tmur.mid && f.bid == tmur.bid)));