这是初步查询。
var DevUsers = db.UserProfiles.Include("Tasks").Include("Projects").Include("FollowerTasks").Select(i => new
{
Tasks = db.Tasks.Where(j => j.AssignedToPersonID == i.PersonID).Where(k => k.QAStatus != "Passed").Select(k => new
{
k.Projects,
k.TaskName,
k.ViewedByDeveloper,
k.Status,
k.QAStatus,
k.ReleaseStatus,
k.TaskID,
k.DisplayTaskID,
k.EstimatedDeliveryDate,
k.AssignedToPerson.FirstName,
Tags = k.Tags.Where(p => p.TagType == "General"),
Modules = k.Tags.Where(p => p.TagType == "Module"),
CodeTables = db.CodeTables.Where(l => l.Status == k.Status).FirstOrDefault(),
}).OrderBy(k => k.ViewedByDeveloper).ThenBy(k => k.CodeTables.DisplayOrder).ThenByDescending(k => k.ReleaseStatus),
i.PersonID,
i.FirstName,
i.LastName,
i.UserID,
i.EmailAddress,
}).OrderBy(i => i.FirstName);
我无法在此DevUsers
DevUsers = DevUsers.Where(m=>m.PersonID==1);
给出错误“无法转换来源......”
我如何在条件适用的地方申请。我需要在此处适用PersonID(int)
和Status(int)
。
答案 0 :(得分:3)
您的DevUsers
是IOrderedEnumerable<T>
,无法隐式转换为IEnumerable<T>
,因此您应该定义一个新变量:
var newDevUsers = DevUsers.Where(m=>m.PersonID==1);
或使用AsEnumerable()
修改上一个查询,如下所示:
//...
}).OrderBy(i => i.FirstName).AsEnumerable();
DevUsers = DevUsers.Where(m=>m.PersonID==1);
答案 1 :(得分:1)
回答你的第二个问题(发表在King King回答的评论中)是:m.Tasks是集合(在这种情况下是IOrderedEnumerable<T>
)并且没有Status
属性。
如果您希望所有任务都具有给定状态,则应使用DevUsers = DevUsers.Where(m => m.Tasks.All(t => t.Status==1))
。
如果您希望任何任务具有给定状态,则应使用DevUsers = DevUsers.Where(m => m.Tasks.Any(t => t.Status==1))
。