lin 建立多个数据表关联以及复杂条件的处理。极大提高运行效率
     //开始更新准确的双一流
            var cx_gxzy = from aa in sjklj.zy_school_zy
                          where (aa.dm != null && aa.dm.Length > 0)
                          select aa;
            var cx_syl = from aa in sjklj.zy_syl
                         where (aa.xxdm != null && aa.xxdm.Length > 0)
                         select aa;
            /*
            var gx_gxsyl = from aa in cx_gxzy  
                           join bb in cx_syl on aa.dm equals bb.xxdm 
                           
                           select new
                           {
                               aa,
                               bb
                           };//要更新的数据表放在join左边,显示关联的左边数据表全部记录
            foreach(var kk in gx_gxsyl)
            {
                if(kk.aa.dm==kk.bb.xxdm)//学校标签 关联条件
                {
                    string jb = kk.aa.jb;
                    
                     //问题在于如何关联的?zy_syl的一个xxdm对应zy_school_zy的dm记录有几十个,因此累加了几十个,即自动累加
                    if (!string.IsNullOrWhiteSpace(jb))
                    {
                        // jb = jb.Trim()+ " 双一流";因为关联的原因,导致" 双一流"被累加了几十次
                        if(jb.Contains("985") && jb.Contains("211"))
                        {
                            jb = "985 211 双一流";
                        }
                        else if(jb.Contains("985"))
                        {
                            jb = "985 双一流";
                        }
                        else if (jb.Contains("211"))
                        {
                            jb = "211 双一流";
                        }
                    }
                    else
                    {
                        jb = "双一流";
                    }
                   
                    kk.aa.jb = jb;
                    kk.aa.syl = "是";
                }

               
 
            }
            sjklj.Configuration.ValidateOnSaveEnabled = false;//出错则显示具体错误
            sjklj.SaveChanges();
            System.Threading.Thread.Sleep(1000);
            */
            //另外建立学校代码+专业名称的关联
            /*
            var gx_gxsyl_ylxk = from aa in cx_gxzy
                                join bb in cx_syl on aa.dm + "|" + aa.zymc equals bb.xxdm + "|" + bb.zymc

                                select new
                                {
                                    aa,
                                    bb
                                };//要更新的数据表放在join左边,显示关联的左边数据表全部记录:显示cx_gxzy数据集中dm+"|"+zymc与右边表匹配的所有记录
            foreach (var kk in gx_gxsyl_ylxk) //更新aa
            {
                if (kk.aa.dm + "|" + kk.aa.zymc == kk.bb.xxdm + "|" + kk.bb.zymc)
                {
                    kk.aa.sfylxk = "是";
                }
            }
            */

            var gx_gxsyl_ylxk = from aa in cx_gxzy                 
                                join bb in cx_syl
                                on aa.dm  equals bb.xxdm  
                                select new
                                {
                                    aa,
                                    bb
                                };//要更新的数据表放在join左边,显示关联的左边数据表全部记录:显示cx_gxzy数据集中dm+"|"+zymc与右边表匹配的所有记录
            foreach (var kk in gx_gxsyl_ylxk) //更新aa
            {
                if (kk.aa.dm == kk.bb.xxdm) //匹配映射学校名称(即上面建立的关联,把equals换成==)
                {
                   // kk.aa.sfylxk = "是";
                   if(kk.aa.zymc.Contains(kk.bb.zymc) || kk.aa.bhzy.Contains(kk.bb.zymc)) //专业名称不能精确匹配,有的包含专业中有一流学科:这种不能建立两表关联,复杂关系条件放在这里
                    {
                        kk.aa.sfylxk = "是";
                    }
                }
            }

            sjklj.Configuration.ValidateOnSaveEnabled = false;//出错则显示具体错误
            sjklj.SaveChanges();
            System.Threading.Thread.Sleep(1000);

渝公网安备 50011902000225号

渝ICP备18008233号-1