如何从匿名列表中删除项目

本文关键字:列表 删除项目 | 更新日期: 2023-09-27 18:30:14

在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);
    }
    }

以上语法对我不起作用。我只想根据几个条件删除项。需要帮助如何从匿名列表中删除项。

如果有任何查询,请询问。谢谢。

如何从匿名列表中删除项目

您不应该在执行过程中从列表中删除项,因为这样做会使foreach循环的迭代器无效。你可以在没有循环的情况下做你想做的事:

var temp = contex.students.Where(item => !CheckCondition(item.StudentID));

回想一下,Where允许您将整个集合作为一个整体进行操作。CheckCondition会在每个学生ID上调用(我试着以你为例;你不需要只根据StudentID进行选择),所有通过CheckCondition的学生都会被删除。

请注意,如果contex是EF/LINQ2SQL上下文,则在使用C#代码检查条件之前,需要添加AsEnumerable()

var temp = contex.students
    .AsEnumerable()
    .Where(item => !CheckCondition(item.StudentID));