錯誤資訊
The LINQ expression 'DbSet<Project>()
.Join(
inner: __p_0,
outerKeySelector: p => p.ProjectId,
innerKeySelector: t => t.ProjectId,
resultSelector: (p, t) => new ProjectDateModel{
ProjectId = p.ProjectId,
ProjectName = p.ProjectName,
Date = t.Date
}
)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
這是我的 ef 模型
public partial class Task
{
public int TaskId { get; set; }
public int EmployeeId { get; set; }
public int ProjectId { get; set; }
public DateTime? Date { get; set; }
}
public partial class Project
{
public int ProjectId { get; set; }
public string ProjectName { get; set; }
}
這里想要實作的是,選擇特定月份的所有任務,并通過 task.ProjectId 和 project.ProjectId 選擇所有專案我的 linq 運算式
var date = new DateTime(year, month, 1);
var projectModel = new List<ProjectDateModel>();
for (int i = 0; i < DateTime.DaysInMonth(year, month); i )
{
var tasks = _context.Task.Where(t => t.Date == date && a.EmployeeId == employeeId).ToList();
var projects = _context.Project.Join(tasks, p => p.ProjectId, t => t.ProjectId, (p, t) => new ProjectDateModel {
ProjectId = p.ProjectId,
ProjectName = p.ProjectName,
Date = a.Date
}).ToList();
projectModel.AddRange(projects);
date = date.AddDays(1);
}
return (projectModel);
專案日期模型
public class ProjectDateModel
{
public int ProjectId { get; set; }
public string ProjectName { get; set; }
public DateTime? Date { get; set; }
}
uj5u.com熱心網友回復:
試試這種方式,我只是不確定日期道具
var tasks = _context.Tasks
.Where(x => SqlFunctions.DatePart("month", x.Date) == date.Month && x.EmployeeId == employeeId)
.ToList();
var taskIds = tasks.Select(x => x.ProjectId);
var projects = _context.Projects
.Where(x => taskIds.Contains(x.ProjectId))
.Select(x => new ProjectDateModel
{
ProjectId = x.ProjectId,
ProjectName = x.ProjectName,
Date = tasks.FirstOrDefault(y => y.ProjectId == x.ProjectId).Date,
});
uj5u.com熱心網友回復:
問題可能是您執行一個 EF 查詢并呼叫ToList,然后嘗試將該本地串列與另一個 EF 查詢加入。
這都是 LINQ,但您混合了兩個不同的提供程式:
- LINQ to 物件和
- LINQ 到物體。
您的 EF 查詢需要能夠轉換為 SQL 代碼才能在資料庫上執行,但您的本地串列在資料庫中不存在。擺脫ToList對第一個查詢的呼叫,我懷疑它會起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/478174.html
