遇到一个问题就卡了很久 本来想的是使用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 in14               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();