日期:2014-05-20  浏览次数:20827 次

linq to entity
C# code

  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来编写!






------解决方案--------------------
C# code

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试图营造给你的感觉……