[英]LINQ to Entity Framework many to many with list of strings
這個問題是從以下繼續: Can't think of query that solve this many to many
用戶@juharr 向我推薦了這個 LINQ 查詢,我只是添加了字符串連接,目的是將名字和姓氏組合成全名。
var courseViews = from c in db.Courses select new CourseView() { CourseID = c.ID, ProfessorName = (from l in c.Leturers where l.Is_Professor select l.LastName+" "+l.FirstName).FirstOrDefault(), AssistantNames = (from l in c.Leturers where !l.Is_Professor select l.LastName+" "+l.FirstName) .ToList() //hmmm problem };
我使用的 ModelView 是另一個可能的問題原因:
public class CourseView { public int ID { get; set; } public string CourseName { get; set; } public string ProfessorName { get; set; } public List AssistantNames { get; set; } }
嗯助手名稱的字符串列表有問題不是嗎? 在我的愚蠢結束時,在視圖中,我使用@foreach(var s in item.AssistantNames){@s}
遍歷了這個列表
@Ladislav 建議使用IQueryable
而不是字符串,如何在哪里?
對於我到目前為止所做的解決方案,我收到以下錯誤:
需要幫忙!
刪除ToList()
調用,然后將 Assistants 屬性更改為:
public IQueryable AssistantNames { get; set; }
看看這是否有效
var courseViews = from c in db.Courses
let assistantsList = (from l in c.Leturers
where !l.Is_Professor
select l.LastName+" "+l.FirstName).ToList()
select new CourseView()
{
CourseID = c.ID,
ProfessorName = (from l in c.Leturers
where l.Is_Professor
select l.LastName+" "+l.FirstName).FirstOrDefault(),
AssistantNames = assistantsList
};
另一種方法是,因為您無論如何都要物化所有課程,將查詢分成兩部分,第一個物化數據,第二個使用它來創建課程視圖(現在是 Linq 到對象查詢):
var courses = (from c in db.Courses
select new { c.ID, Leturers = c.Leturers.ToList() }).ToList();
var courseViews = from c in courses
select new CourseView()
{
CourseID = c.ID,
ProfessorName = (from l in c.Leturers
where l.Is_Professor
select l.LastName+" "+l.FirstName).FirstOrDefault(),
AssistantNames = (from l in c.Leturers
where !l.Is_Professor
select l.LastName+" "+l.FirstName)
.ToList()
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.