返回匿名类巨慢 返回

上图是SqlSugar的执行时间,才跑1/5就用了4分钟了。

// 匿名类初始化 ########################
TypeRuntimeInfo runtime = TypeRuntimeInfoCache.GetRuntimeInfo<T>();
Inte.XFramework.Reflection.Emit.ConstructorInvoker ctor = runtime.Constructor;
if (runtime.IsAnonymousType)
{
values = new object[reader.FieldCount];
reader.GetValues(values);
for (index = 0; index < values.Length; ++index)
{
if (values[index] is DBNull) values[index] = null;
}
return (T)ctor.Invoke(values);
}
这是我换一种写法的时间,跑完才用2分钟不到。
楼主是不是要优化了。。。
热忱回答(10)
-
fate stay night VIP0
2017/11/17你确定上在面的图是sqlsugar? 明明是EF吧
0 回复 -
绝情草 VIP0
2017/11/17@fate stay night:自己写的代码都不认识,要拿什么才能拯救你。。。
EF 有Queryable<T>()这种写法?
0 回复 -
fate stay night VIP0
2017/11/17sqlsugar 什么时候支持了 form in ?
0 回复 -
fate stay night VIP0
2017/11/17EF一直都支持queryable<T>()只不过是IQueryable我的是ISqlSugarable
0 回复 -
绝情草 VIP0
2017/11/17EF一直都支持queryable<T>(),那真的是要请教了。。。我只看过DbContext.Set 和 DbContext.Provider.SqlQuery。
如果您还不知道
from a in context.Set<T>()
where ***
select ***
这种写法怎么才能转换成 context.Set<T>().Where().Select(),还是建议多补补课。
如果这种图您都不认得,那对SqlSugau的作者真的很失望
0 回复 -
绝情草 VIP0
2017/11/17
补发图片
0 回复 -
fate stay night VIP0
2017/11/17@绝情草: https://msdn.microsoft.com/en-us/library/bb351562(v=vs.110).aspx
首先EF是支持这种写法的,底层就是IQueryable<T>的扩展方法
第二 EF这种我当然知道,问题是我没用微软原生的类你这种写法也能通过让我很吃惊,我的ISqlSugarable不是一个集合也没有实现IQueryable接口
0 回复 -
fate stay night VIP0
2017/11/18第三点,你的上面代码并不能实现我的需求 例如 .Select((st,sc)=>new {sc,st,sc.id}).ToList()对这种复杂的无解
性能我也和EF之类作过比较只快不慢,后期会优化的更好,至于微软是如何把我自定义的一个接口(非集合接口)支持 from c in 这种语法并且还能正确的转成我自定义接口里面的方法,可能还真让你失望了我真不明白,或者就是IDE的一个巧合 我正好有 Where Select微软IDE的一个BUG也说不定
0 回复 -
绝情草 VIP0
2017/11/18
自定义的类(接口)只要参考着IQueryable<T>实现了上面这些方法,那么就可以用from c in 这种写法(查询操作符写法)。其实 查询操作符写法 最终还是会编译成上面的这些方法(点操作符写法)
0 回复 -
天极苍穹 VIP0
2018/8/16路过,作者完全是开源,纯技术交流,哥们儿,可以提建议,但不要带火药味。
0 回复