删除或跳过 IQueryable 中的元素

本文关键字:元素 IQueryable 删除 | 更新日期: 2023-09-27 18:31:51

我有一个 IQueryable 的麻烦,它正在从下面的查询中重新调整:

var userTasks = from tasks in context.Tasks
                                join projects in context.Projects
                                on tasks.ProjectId equals projects.ProjectId
                                join userProjects in context.UserProjects
                                on projects.ProjectId equals userProjects.ProjectId
                                join users in context.UserProjects
                                on userProjects.UserId equals users.UserId
                                select new
                                {
                                    TaskId = tasks.TaskId,
                                    Name = tasks.Name,
                                    Status = tasks.Status
                                };

在IQueryable中获取任务后,我必须遍历每个元素

foreach (object task in userTasks)
{
var taskId = userTasks.Where(t => t.TaskId == projectId).FirstOrDefault().TaskId;
//other operations
}

当我使用FirstOrDefault时,我总是得到相同的taskId。IQuyeryable不是没有方法删除。那么我怎么能跳过我已经拿过的元素呢?

删除或跳过 IQueryable 中的元素

你的意思是只接受与任务 ID 相等的任务。

foreach (var task in userTasks.Where(t => t.TaskId == projectId))
{
    var taskId = task.TaskId; // Always the same task.
    //other operations
}

如果要查询整个结果,则:

foreach (var task in userTasks)
{
    var taskId = task.TaskId;
    //other operations
}

尝试

foreach (var task in userTasks)
{
     var taskId = task.TaskId
}

现在,您正在查询结果中获取每个项目的第一个项目,这显然总是相同的项目。