连续两次被相同问题困扰。

一、举例

var query=db.StudentScore.Where(r=> r.SubjectId==subjectId).Select(g=>new {SubjectId=SubjectId,Score=g.Score}).ToList();
 
这是一段平常的代码,但有时候他会报错:匿名类无法转换为实体类StudentScore。
 
1期初,我是这么想的:
 new StudentScore
var query=db.StudentScore.Where(r=> r.SubjectId==subjectId).Select(g=>new StudentScore {SubjectId=SubjectId,Score=g.Score}).ToList();
但还是报错!原因还是匿名类无法转换为实体类StudentScore。
问:为什么不能转换为自己呢?答: 难道因为实体类中有外键或者字段数量上不匹配吗。。
 
2 新建了一个类
StudentScoreTemp   就两个属性 SubjectId、 Score
var query=db.StudentScore.Where(r=> r.SubjectId==subjectId).Select(g=>new StudentScoreTemp   {SubjectId=SubjectId,Score=g.Score}).ToList();
转换成功。
 
3后来发现CSDN 已经有答案 https://bbs.csdn.net/topics/390777388
其中还记录了另一种方法:query就是个集合,你遍历就行了
foreach(var v in query)  遍历的时候按自己需要重新组装成需要的形式。
 
4还发现了一个错误的方法:
var query=db.StudentScore.Where(r=> r.SubjectId==subjectId).AsEnumerable().Select(new StudentScoreTemp() { ... }).ToList()
错误原因:
AsEnumerable() 时会去数据库查询数据,相当于把数据先查询出来到内存中,再在内存中通过Select筛选。如果数据量较大是非常消耗内存的!
原因详情见 :https://www.cnblogs.com/joeatgz/p/5180788.html
 
5 新发现
var query=db.StudentScore.Where(r=> r.SubjectId==subjectId).Select(g=>g).ToList();
 这样可以查询所有字段
 
6 还发现  Select的时候,时间无法转换成 年月日  YYMMMdd
解决1:先ToList到内存,然后再次Select时可以转换。
解决2:  先匿名类接收数据, foreach循环或for 循环遍历的时候按自己需要重新组装成需要的形式。(3中的发现是有用滴!)
 
7 又发现EF复杂查询好难呀!
这是对EF拉姆达表达式和linq语法不熟悉是很费时间的,其实可以
1直接在数据库中创建视图。
2EF也可以直接写sql语句

  //1)查询SqlQuery

  result.slList = db.Database.SqlQuery<DataTemp>("select Precision,Year,LandCover, sum(Area) as Area  from [EcoTypes]  where  LandCover=@type group by Precision, Year, LandCover", new SqlParameter("@type", "森林")).Select(d=> d.Area).ToList();

//2)增删改:ExecuteSqlCommand

db.Database.ExecuteSqlCommand("").ToString();

 
解决问题的一般流程总结:
1自己想
2百度
3官网文档
4问大神
 

EF select 匿名类 问题的更多相关文章

  1. C# MVC EF中匿名类使用

    控制器中代码: var list = context.Says.Join( context.Users, a => a.UserId, b => b.Id, (a, b) => ne ...

  2. .net 根据匿名类生成实体类,根据datatable生成实体类,根据sql生成实体类

    在开发中可能会遇到这几种情况 1.EF或LINQ查询出来的匿名对象在其它地方调用不方便,又懒的手动建实体类 2.通过datatable反射实体需要先建一个类 ,头痛 3.通过SQL语句返回的实体也需要 ...

  3. 读取ViewBag匿名类

    关于遍历 viewBag匿名类错误 EF tt生成的类 明明有值眼睁睁看着 却不认识 public ActionResult Index() { MyTestEntities1 db = new My ...

  4. MVC匿名类传值学习

    刚接触MVC+EF框架不久,但一直很困惑的就是控制器能否及如何向视图传递匿名类数据.宝宝表示很讨厌去新建实体类啦,查询稍有不同就去建一个实体类不是很麻烦吗,故趁阳光正好,周末睡到自然醒后起来尝试了之前 ...

  5. HttpCookie加匿名类实现多语言

    突然想做一个多语言网站,确不知道怎么实现好,突然想到了HttpCookie,然后页面后台用匿名类实现语言的储存. string lan = Request["str_lan"]; ...

  6. Linq之隐式类型、自动属性、初始化器、匿名类

    目录 写在前面 系列文章 隐式类型 自动属性 初始化器 匿名类 总结 写在前面 上篇文章是本系列的小插曲,也是在项目中遇到,觉得有必要总结一下,就顺手写在了博客中,也希望能帮到一些朋友.本文将继续介绍 ...

  7. .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)

    1.自动属性 Auto-Implemented Properties 2.隐式类型 var  var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...

  8. silverlight datagrid绑定匿名类

    原文 http://www.cnblogs.com/luweis/archive/2011/10/21/2220587.html 刚开始遇到的一个问题是这样的,我有一个datagrid,根据不同的条件 ...

  9. C# 3.0 / C# 3.5 对象集合初始化器、匿名类

    对象集合初始化器 在 .NET 2.0 中构造一个对象的方法一是提供一个重载的构造函数,二是用默认的构造函数生成一个对象,然后对其属性进行赋值. 在 .NET 3.5/C# 3.0 中,我们有一种更好 ...

随机推荐

  1. Alpha冲刺 - (8/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 进一步优化代码,结合自己负责的部分修 ...

  2. docker rmi命令-删除image

    rmi 删除image Usage: docker rmi IMAGE [IMAGE...]Remove one or more images -f,--force=falseForce remova ...

  3. 判断字符串是否为正整数 & 浮点小数

    /** * 判断字符串是否为数字(正整数和浮点数) * @param str * @return */public static boolean isNumeric(String str) { Str ...

  4. Shell-1--概念

  5. Appium发送中文或其他语言的问题

    1. 需要在配置信息中增加'unicodeKeyboard' = “True”字段,如下: def driver_weixin(platformVersion="6.0.1",de ...

  6. Java-大数据方向学习和已掌握知识点整理

    现在的项目是大数据相关项目,一路走来从最初的 C 开发到 Java 再到 大数据,不容易 大数据方向知识点太多,优先掌握了主流的一些技术并运用到了现在的项目中 另外也整理了一份java开发和项目管理方 ...

  7. 第二篇:服务消费者(RestTemplate+ribbon)

    第一篇讲了服务的注册,这篇来说说服务的调用,服务与服务的通讯是基于http restful,springcloud的服务调用是通过ribbon方式的,客户端的负载均衡. Talk is cheap.S ...

  8. vsftpd3.0.3配置

    2019.2.18更新 证实可用!!! 原文: 这两天测试在Ubuntu18.04上搭建一个ftp服务器,搜了一下大家都在用vsftpd,于是根据这个大佬的基础教程搭了一个,搭完一切正常,在windo ...

  9. Java线程池种类、区别和适用场景

    newCachedThreadPool: 底层:返回ThreadPoolExecutor实例,corePoolSize为0:maximumPoolSize为Integer.MAX_VALUE:keep ...

  10. 微服务开发有道之把项目迁移到Kubernetes上的5个小技巧

    我们将在本文中提供5个诀窍帮你将项目迁移到Kubernetes上,这些诀窍来源于过去12个月中OpenFaas社区的经验.下文的内容与Kubernetes 1.8兼容,并且已经应用于OpenFaaS ...