日期:2014-05-20 浏览次数:20827 次
List<T_planstopInfo> list = new List<T_planstopInfo>(); foreach (DataRow row in table.Rows) { T_planstopInfo info = new T_planstopInfo(); info.P11_PlanStopID = row[0].ToString(); info.M11_PlanStopCode = row[1].ToString(); info.TSTART = row[2].ToString(); info.TEND = row[3].ToString(); info.M00_FamilyCode = row[4].ToString(); info.M01_AreaCode = row[5].ToString(); info.M02_LineCode = row[6].ToString(); info.CurrentDate = row[7].ToString(); info.PlanRemarks = row[8].ToString(); info.M06_StationCode = row[9].ToString(); info.P01_HourVolumeCode = row[10].ToString(); info.M03_WorkMake = row[11].ToString(); info.M04_WorkSort = row[12].ToString(); list.Add(info); } return list; // 这段代码怎么用linq to entity来编写!
List<T_planstopInfo> list = (from row in table.AsEnumerable() select new T_planstopInfo { P11_PlanStopID = row.Field<int>(0).ToString(), M11_PlanStopCode = row.Field<string>(1).ToString(), TSTART = row.Field<string>(2).ToString(), TEND = row.Field<string>(3).ToString(), M00_FamilyCode = row.Field<string>(4).ToString(), M01_AreaCode = row.Field<string>(5).ToString(), M02_LineCode = row.Field<string>(6).ToString(), CurrentDate = row.Field<string>(7).ToString(), PlanRemarks = row.Field<string>(8).ToString(), M06_StationCode = row.Field<string>(9).ToString(), P01_HourVolumeCode = row.Field<string>(10).ToString(), M03_WorkMake = row.Field<string>(11).ToString(), M04_WorkSort = row.Field<string>(12).ToString() }).ToList();
------解决方案--------------------
在Linq To Entities的世界里根本不存在DataSet/DataTable。
通过EDM把数据库Schema映射为所谓Conceptual Model(可以与数据库表/视图等1:1,也可以完全两种样子). Linq To Entities就是查询这个Model,这个查询被转换为Command Tree后由Object Services传递给Entity Client层,Entity Client层再根据这个Command Tree生成SQL语句,通过ADO.NET Data Provider查询数据库,数据库结果集再被Entity Client转换为EDM描述的样子(Conceptual resultset),再为Object Services层封装为Objects.
无论中间过程怎样,从EF的角度看,你写的查询像是在查询ObjectSet<T>,取得的结果呢又是对象集合。你的程序仿佛不知道数据库的存在一样。表面上看起来就是在查询集合,取得子集,保存集合。而EF在后台帮你把你查询集合的语句转换为数据库SQL,再根据结果封装成强类型集合返回给你。你像是在和内存中某个强类型集合打交道似的感觉,表面上看不出任何在与数据库打交道的“痕迹”,这就是EF试图营造给你的感觉……