.net – 如何使用LINQ创建IQueryable类型的匿名对象
我正在一个ASP.NET MVC项目中工作,我创建了两个
LinqToSQL类.我还为模型创建了一个存储库类,我在该类中实现了一些方法,如LIST,ADD,SAVE,它为控制器提供数据.现在在其中一个存储库类中,我已经使用这样的LINQ连接提取了一些数据.
private HerculesCompanyDataContext Company = new HerculesCompanyDataContext(); private HerculesMainDataContext MasterData = new HerculesMainDataContext(); public IQueryable TRFLIST() { var info = from trfTable in Company.TRFs join exusrTable in MasterData.ex_users on trfTable.P_ID equals exusrTable.EXUSER select new { trfTable.REQ_NO,trfTable.REQ_DATE,exusrTable.USER_NAME,exusrTable.USER_LNAME,trfTable.FROM_DT,trfTable.TO_DT,trfTable.DESTN,trfTable.TRAIN,trfTable.CAR,trfTable.AIRPLANE,trfTable.TAXI,trfTable.TPURPOSE,trfTable.STAT,trfTable.ROUTING }; return info; } 现在,当我从我的控制器调用此方法时,我无法获得列表.我想知道的是,如果不创建自定义数据模型类,我如何返回像IQueryable这样的匿名类型的对象.并且因为这不属于任何一个数据模型,所以如何在视图中引用此列表. 解决方法
您不能返回“匿名类型”的对象.请参阅
this previous post of mine,解决这种情况,似乎匿名类型将允许我们在强类型上作弊,但他们没有.
是的,从灵活类型(如DataTables)转变为强类型对象是解决方案策略的重要组成部分.使用LINQ-To-SQL,您应该能够非常轻松地返回强类型实体对象.您的存储库方法需要返回特定类型的IQueryable接口,如IQueryable< TRF>,而不仅仅是IQueryable.或者,存储库方法只能返回单个TRF实体对象或这些对象的列表. 请记住,匿名类型和隐式类型变量是两个非常不同的东西.在后台由编译器为您创建匿名类型.在这种情况下,不要像在示例LINQ查询中那样将数据放入匿名类型.假设您的实体是trfTable,请尝试以下方法: public IQueryable<trfTable> TRFLIST() { var info = from trfTable in Company.TRFs join exusrTable in MasterData.ex_users on trfTable.P_ID equals exusrTable.EXUSER select new trfTable return info; } 这样做的好处是它可以充分利用IQueryable的本质,因为在存储库外添加的标准实际上会添加到生成的查询中.这很酷.但是,there is some good debate关于这是否是最佳方式. 请注意,此处的信息由编译器隐式输入,但它不是匿名类型.这是一个IQuerable< trfTable>.这是关键的区别. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何处理MVC5中的配置和代码中的404错误?
- IIS输出缓存与ASP.NET输出缓存
- asp.net – Azure网站 – 尽量减少小的频繁停机
- .net – 提供“添加到日历”链接
- 学习ASP.NET MVC从1或2或3开始
- asp.net – Response.Redirect导致IsPostBack为true
- ASP.NET linq选择多个连接
- 如何在ASP.NET Core MVC中获取Url Referrer?
- asp.net – URL重写规则在Visual Studio Development Serve
- asp.net – 如何以编程方式回收.net Web应用程序自己的appp
- asp.net-core-mvc – 如何考虑请求和响应范围标头
- 初学ReactJS,写了一个RadioButtonList组件
- “DataSource和DataSourceID都被定义为”使用ASP
- asp.net-mvc-3 – ASP.NET MVC 3.0构建视图为64位
- asp.net – 英国邮政编码查找流程的好例子
- asp.net-mvc – 如何测试Asp.Net MVC视图是否无异
- asp.net-mvc – 如何将Telerik ComboBox中的数据
- asp.net – UrlRewriting.Net模块IIS7等于Page.U
- asp.net – 存储库模式最佳实践
- asp.net – 忽略在IIS中为代码400(错误请求)配置