遇到一個問題就卡了很久 本來想的是使用EF執行原生SQL的 但是出現了讀取器不兼容的問題 這個我還沒搞懂是咋回事TAT
於是就嘗試用EF+linq寫嵌套子查詢 因為原生SQL語句的話 我已經寫好了在數據庫也是可以執行正確的 select *,子查詢語句 from 表名 where條件這種
看了一些教程 以及摸索着寫 代碼如下
1.首先寫的viewmodel需要定義為list集合類型的 因為查詢出來的數據不止一條
1 public class VotesModel 2 { 3 public int? NewsNum { get; set; } 4 5 public List<VotesModel1> VotesModels { get; set; } 6 } 7 public class VotesModel1 8 { 9 public string NewsTitle { get; set; } 10 }
2.其次就是編寫linq語句了 兩種寫法都是OK的
1 //var query = (from a in 表名 2 // where 條件 3 // select new VotesModel 4 // { 5 // NewsNum = a.NewsNum, 6 // VotesModels = (from b in db.News 7 // where 條件 8 // select new VotesModel1 9 // { 10 // NewsTitle = b.NewsTitle 11 // }).ToList() 12 // }).ToList(); 13 var query = (from a in 表 14 where 條件 15 select new 16 { 17 NewsNum = a.NewsNum, 18 VotesModels = (from b in db.News 19 where a.TypeID == b.NewsID 20 select b.NewsTitle ) 21 }).ToList();