使用EF 4 C#。我有一个匿名列表。想要从匿名列表中删除项目
Anonymous list :
var temp=from p in contex.students select p;//it’s a complex query,for now just use simple select
foreach(var item in temp)
{
if(item.StudentID)//if satisfy some condition then want to remove this student information from anonymous list
{
temp=temp.where(p=>studentID!=item.studentID);
}
}
上面的语法对我不起作用。我只想在几个条件下删除项目。需要帮助如何从匿名列表中删除项目。
如果有任何查询,请先询问。谢谢。
答案 0 :(得分:3)
您不应该随便从列表中删除项目,因为这样做会使foreach
循环的迭代器无效。你可以在没有循环的情况下做你想做的事:
var temp = contex.students.Where(item => !CheckCondition(item.StudentID));
回想一下,Where
可让您对整个集合进行整体操作。每个学生ID都会调用CheckCondition
(我试图按照您的示例;您不需要仅根据StudentID
进行选择),所有通过CheckCondition
的学生都会被删除。
请注意,如果contex
是EF / LINQ2SQL上下文,则需要在使用C#代码检查条件之前添加AsEnumerable()
:
var temp = contex.students
.AsEnumerable()
.Where(item => !CheckCondition(item.StudentID));