遇到一个问题就卡了很久 本来想的是使用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();
原文:https://www.cnblogs.com/xiemin-minmin/p/13631850.html