日期:2014-05-20 浏览次数:21162 次
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试图营造给你的感觉……