EF中IQueryable<>.Select自定义的问题。 IQueryable<>.Select(o=>new UserDB{o.ID,o.Name}) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 额,你就不能先where后select么??其实select地意思在linq里其实不是“选择”而是“重映射”,所以这个属于你自己使用上地毛病 非要如此,你xxx.select(o=>o)就可以了,问题是这样木有意义,如果是这样你还不如直接返回xxx 我知道是投影的。所以我并不直接用IQueryable<>.Select,而是自己写了一个select方法。我没表达清楚,抱歉,where在前在后,其实不是我要表达的主要目的,换句话说ef除了select可以筛选数据库读取的字段外,还有其它办法吗?(具我所知的话,就是额外构建表达树式了。)我的目的是能实现select xxxxxx,xxxx,xxx from table 的同时返回的是一个实体的整体。而不是投影过后的结果。赋上我动态构建的表达式树//创建表达式变量参数 var parameter = Expression.Parameter(typeof(TInfo), "o"); // o=> var property = Expression.Property(parameter, typeof(TInfo).GetProperty("ID")); // ID var pred = Expression.Lambda(property, parameter); // o=>o.ID //组建表达式树:Select(c=>c.ContactName) var expr = Expression.Call(typeof(Queryable), "Select", new Type[] { typeof(TInfo), typeof(T) }, Expression.Constant(custs), selector); //使用表达式树来生成动态查询 return Query.Provider.CreateQuery(expr);以上的动态,其实也还是call了queryable的select方法。只不过是使用“字符串”的形式去组合(结果返回的类型还是投影的)。所以肯定不能这样使用。 如果是按你的想法,差不多也可以办到,不过表达式构造上,你的更改表达式树的顺序,得把select token放到最后,而不是最前面 谢谢你的回答,不过这个表达树返回的类型还是List<匿名> 不是我想要的。我是希望能改过ef操作数据库select 字段部份。而不影响到返回的实体。没有显示使用的字段,统一为null或者字段默认值。 IQueryable<>.Select(o=>new UserDB(){id = o.ID,name = o.Name}) .ToList(); SOCKET传输时第一次发送,不会出现问题,但是第二次就报错了 样把一个以逗号分隔的字符串变成一个数组? 自己做TCP文件服务器,如何才能 复制里面的文件 然后在桌面上 粘贴 出来(像FTP) c++ 转 c#问题(立即给分) 如何将outlook2007窗体区域中的listview控件映射到c#outlook外接程序中,以便调用. 求助 有没有人研究过Duwamish7的示例程序 .net安装程序图标的问题 C#读取文件并重命名方法 如何设置文本框/组合框的掩码? c++与c#代码转换 dataset中数据库连接问题
我知道是投影的。所以我并不直接用IQueryable<>.Select,而是自己写了一个select方法。
我没表达清楚,抱歉,where在前在后,其实不是我要表达的主要目的,换句话说ef除了select可以筛选数据库读取的字段外,还有其它办法吗?(具我所知的话,就是额外构建表达树式了。)
我的目的是能实现select xxxxxx,xxxx,xxx from table 的同时返回的是一个实体的整体。而不是投影过后的结果。赋上我动态构建的表达式树
//创建表达式变量参数
var parameter = Expression.Parameter(typeof(TInfo), "o"); // o=>
var property = Expression.Property(parameter, typeof(TInfo).GetProperty("ID")); // ID
var pred = Expression.Lambda(property, parameter); // o=>o.ID //组建表达式树:Select(c=>c.ContactName)
var expr = Expression.Call(typeof(Queryable), "Select", new Type[] { typeof(TInfo), typeof(T) }, Expression.Constant(custs), selector); //使用表达式树来生成动态查询
return Query.Provider.CreateQuery(expr);
以上的动态,其实也还是call了queryable的select方法。只不过是使用“字符串”的形式去组合(结果返回的类型还是投影的)。所以肯定不能这样使用。
谢谢你的回答,不过这个表达树返回的类型还是List<匿名> 不是我想要的。
我是希望能改过ef操作数据库select 字段部份。而不影响到返回的实体。没有显示使用的字段,统一为null或者字段默认值。