删除或跳过 IQueryable 中的元素
Remove or skip element in IQueryable
我在使用 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 没有方法 Remove。那我怎么能跳过我已经学过的元素呢?
尝试
foreach (var task in userTasks)
{
var taskId = task.TaskId
}
现在,对于到达那里的每个项目,您正在获取查询结果中的第一个项目,这显然总是相同的项目。
您打算只接受与任务 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
}
我在使用 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 没有方法 Remove。那我怎么能跳过我已经学过的元素呢?
尝试
foreach (var task in userTasks)
{
var taskId = task.TaskId
}
现在,对于到达那里的每个项目,您正在获取查询结果中的第一个项目,这显然总是相同的项目。
您打算只接受与任务 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
}