lambda表达式和linq测试出错问题

首先建EF模型,出错问题及原因放到专门EF问题的博客中

先放正确的代码:

Entities1 db = new Entities1();
//lambda表达式
dic_todo aff = db.dic_todo.Where(a => a.CODE == 1).FirstOrDefault();
//linq表达式
dic_todo aff2 = (from s in db.dic_todo
                 where s.CODE==1
                 select s).ToList().FirstOrDefault();

lambda表达式经常用所以没什么问题。

开始写的linq表达式为

dic_todo aff2 =from s in db.dic_todo
               where s.CODE==1
               select s

编译出错,提示无法将类型system.Linq.IQueryable隐式转换为WebApplication6.Models.dic_todo.存在一个显示转换(是否缺少强制转换)

刚开始我还以为是后面的表达式里面的db.dic_todo取到的数据不对,然后s后面没有code属性引起的报错,后来才发现是前面我给定对象类型了,后来需要转成相应的类型。

然后我修改的代码为

dic_todo aff3 = (dic_todo)from s in db.dic_todo
                                      where s.CODE == 1
                                      select s;

运行出错,提示无法将类型为“System.Data.Entity.Infrastructure.DbQuery`1[WebApplication6.Models.dic_todo]”的对象强制转换为类型“WebApplication6.Models.dic_todo”。

在网上查资料说用tolist就可以直接把linq查出来结果转成实体(https://bbs.csdn.net/topics/392170355)

另外还有把lambda表达式获取的匿名对象转成实体,直接new 你需要的泛型就好了(https://bbs.csdn.net/topics/392177292?page=1)

你可能感兴趣的:(总结)