再请教一个EntityFramwork使用的问题

he_hawk 2013-10-14 04:31:32
使用EF,都是面向对象,linq查询返回的是对象集合,使用执行SQL(ExecuteStoreQuery)返回的也是对象集合,我想统计怎么办呢?要自己新建立数据库连接,建立执行SQL的方法来完成还是怎么好?

...全文
384 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
he_hawk 2013-10-18
  • 打赏
  • 举报
回复
引用 8 楼 caozhy 的回复:
var query = db.Student.Where(x => x.性别 == "男").GroupBy(x => x.班级).Select(x => new { 班级 = x.Key, 男生数 = x.Count() });
我执行总报如下错误:
用户代码未处理 System.Data.EntityCommandExecutionException
  HResult=-2146232004
  Message=执行命令定义时出错。有关详细信息,请参阅内部异常。
  Source=System.Data.Entity
  StackTrace:
       在 System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
       在 System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
       在 System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
       在 System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
       在 HMS.Web.BaseService.GetObjectBySQL(String sWhere, String sOrderBy) 位置 d:\2013\SmartRoom\SLProject\HMS\HMS.Web\BaseService.svc.cs:行号 65
       在 SyncInvokeGetObjectBySQL(Object , Object[] , Object[] )
       在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
       在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
  InnerException: MySql.Data.MySqlClient.MySqlException
       HResult=-2147467259
       Message=Unknown column 'GroupBy1.K1' in 'field list'
       Source=MySql.Data
       ErrorCode=-2147467259
       Number=1054
       StackTrace:
            在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()
            在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
            在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
            在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId)
            在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()
            在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
            在 MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
            在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
            在 System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
       InnerException: 
楼上moonwrite 提供的网址那几个平均、计数的也出这个错误。。求解,不知道什么原因
huwei001982 2013-10-18
  • 打赏
  • 举报
回复
linq 神器。。。好用
moonwrite 2013-10-16
  • 打赏
  • 举报
回复
引用 6 楼 he_hawk 的回复:
[quote=引用 4 楼 moonwrite 的回复:] 比如要查询有多少个学生~ var count = db.Student.Count(); 多少男学生 var boy = db.Student.Where(x=>x.Sex==1).Count();//db.Student.Count(x=>x.Sex==1); 好好学习linq~
这样一个值可以直接转换为数值。 如果统计整个学校各班都多少男生,我该如何读取 var 对象的值呢? 如统计出下面结果: 班级 男生数 一班 15 四班 13 五班 18 六班 11 传统SQL可能是select 班级,count(*) as 男生数 where 性别="男" group by 班级 (以上SQl可能有误,只想表明意思)[/quote] 版主已经回答你了 把下列主题看完吧~ 虽然是说linq to sql, 但你就当学linq http://www.cnblogs.com/lyj/archive/2008/01/25/1052713.html
zl289kkk 2013-10-16
  • 打赏
  • 举报
回复
IEnumerable<Article> lst = this.DataContext.Database.SqlQuery<Article>(sql.ToString());
执行SQL一点也没有问题的呀
threenewbee 2013-10-16
  • 打赏
  • 举报
回复
var query = db.Student.Where(x => x.性别 == "男").GroupBy(x => x.班级).Select(x => new { 班级 = x.Key, 男生数 = x.Count() });
Andy__Huang 2013-10-16
  • 打赏
  • 举报
回复
可以在linq里面做,也可以先建好视图统计,加入到EDM里面,返回数据直接用视图的EDM
he_hawk 2013-10-16
  • 打赏
  • 举报
回复
引用 4 楼 moonwrite 的回复:
比如要查询有多少个学生~ var count = db.Student.Count(); 多少男学生 var boy = db.Student.Where(x=>x.Sex==1).Count();//db.Student.Count(x=>x.Sex==1); 好好学习linq~
这样一个值可以直接转换为数值。 如果统计整个学校各班都多少男生,我该如何读取 var 对象的值呢? 如统计出下面结果: 班级 男生数 一班 15 四班 13 五班 18 六班 11 传统SQL可能是select 班级,count(*) as 男生数 where 性别="男" group by 班级 (以上SQl可能有误,只想表明意思)
周美文 2013-10-15
  • 打赏
  • 举报
回复
建议先熟悉一些ADO.NET的基本东西!
moonwrite 2013-10-15
  • 打赏
  • 举报
回复
比如要查询有多少个学生~ var count = db.Student.Count(); 多少男学生 var boy = db.Student.Where(x=>x.Sex==1).Count();//db.Student.Count(x=>x.Sex==1); 好好学习linq~
dralion 2013-10-15
  • 打赏
  • 举报
回复
linq 的Aggregate,sum等
OSMeteor 2013-10-14
  • 打赏
  • 举报
回复
每个类型里面都有提供的,返回的属性里面自带的 list.count 很多属性的,你看下msdn
QuickPai 2013-10-14
  • 打赏
  • 举报
回复
linq里面的扩展方法一大堆,有count,sum,average等等,这些你不知道吗?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧