如何從此查詢的第一部分(Select p +> new ...)中投影模型,進入ResultsVM視圖模型(Select(p => new ResultsVM ....)?附加信息:實體或複雜類型'cb2.Models.ResultsVM'不能在LINQ to Entities查詢中構造
當我在下面嘗試時,出現以下錯誤:其他信息:無法構造實體或複雜類型'cb2.Models.ResultsVM'在
一個的LINQ to Entities查詢我知道我必須投射到另一個匿名類型,所以必須更換:
.Select(p => new ResultsVM
與.Select(p => new
- 但我的觀點是期待ResultsVM不是anonymouse類型。
任何想法如何解決這個問題?
謝謝
馬克
var qas = db.QAs.Include(q => q.Analyst).Where(x => x.date >= from && x.date < to);
var res = qas.GroupBy(p => p.Analyst.AgentName)
.Select(p => new
{
AnalystId = p.Key,
Analyst = p.FirstOrDefault().Analyst.AgentName,
CorrectP = p.Where(x => x.priority == 1).Count(),
WrongP = p.Where(x => x.priority == 0).Count(),
CorrectA = p.Where(x => x.assignment == 1).Count(),
WrongA = p.Where(x => x.assignment == 0).Count(),
CorrectS = p.Where(x => x.solution == 1).Count(),
WrongS = p.Where(x => x.solution == 0).Count()
})
.Select(p => new ResultsVM
{
AnalystId = p.AnalystId,
Analyst = p.Analyst,
CorrectP = p.CorrectP,
WrongP = p.WrongP,
Pp = p.CorrectP + p.WrongP != 0 ? p.CorrectP * 100.0/(p.CorrectP + p.WrongP) : 0,
CorrectA = p.CorrectA,
WrongA = p.WrongA,
Ap = p.CorrectA + p.WrongA != 0 ? p.CorrectA * 100.0/(p.CorrectA + p.WrongA) : 0,
CorrectS = p.CorrectS,
WrongS = p.WrongS,
Sp = p.CorrectS + p.WrongS != 0 ? p.CorrectS * 100.0/(p.CorrectS + p.WrongS) : 0
}).ToArray();
結果VM:
public class ResultsVM
{
public int Id { get; set; }
public string AnalystId { get; set; }
public string Analyst { get; set; }
public int CorrectP { get; set; }
public int WrongP { get; set; }
public double Pp { get; set; }
public int CorrectA { get; set; }
public int WrongA { get; set; }
public double Ap { get; set; }
public int CorrectS { get; set; }
public int WrongS { get; set; }
public double Sp { get; set; }
}
奇怪的是,此代碼的工作沒有示數,而據我所看到的,是試圖做同樣的事情:
var res = scores2.GroupBy(p => p.AnalystId)
.Select(p => new
{
AnalystId = p.Key,
Analyst = p.FirstOrDefault().Analyst.AnalystName,
score = p.Sum(x => x.Score),
taskcount = p.Count()
})
.Select(p => new ObjectiveScoreVM
{
AnalystId = p.AnalystId,
Analyst = p.Analyst,
Score = p.taskcount != 0 ? p.score * 100.0/p.taskcount : 0,
TasksMet = p.score,
TaskCount = p.taskcount
})
.ToArray();
謝謝,馬克
嗨 - 我不認爲它是重複的,因爲其他問題不能解決我的問題。我已經添加了一些更多的問題。謝謝,Mark – Mark
ResultsVm是EF實體還是ObjectiveScoreVM不是?請指定哪些是EF模型上的實體,哪些不是。 – JotaBe
嗨 - 兩者都只是ViewModels - 它們不映射到任何數據庫表。謝謝,馬克 – Mark