C# Linq中的Join使用

1、使用两个数据表Dk_SyDlCxInfo和testTable,当然多个也行,只不过需要使用多个Join,表大家随意建就是了,可以通过一个字段对两个表进行连接,而我使用两个字段来确定唯一性

2、使用的linq to sql类,这个已经淘汰多少年了,不过没事,EFCore中一样用,我之前学的linqtosql,现在使用EFCORE也很快上手,基本没什么区别

3、直接写,因为太简单,勿喷:

DataClasses1DataContext db = new DataClasses1DataContext();//获取库
            var mydb = db.Dk_SyDlCxInfo
                .Join(db.testTable, e => e.XiaoQu, j => j.campus, (e , j) => new { e,j}).Where(p=>p.e.XiaoQu==p.j.campus && p.e.Lhao==p.j.buildingNumber);

//首先Join的第一个参数需要给个表,然后做笛卡尔积,然后new一个新的表,表中就是两个表的笛卡尔集,接着通过where增加连接条件,我加个两个条件来确定数据

//第二个参数是指的第一个表Dk_SyDlCxInfo,第三个参数是指的第二个表testTable
            Console.WriteLine(mydb.Count());//mydb中数据行

            foreach (var item in mydb)
            {
                Console.WriteLine(String.Join("-", item.e.XiaoQu.Trim(), item.e.Lhao, item.e.LjDl, item.j.campus, item.j.buildingNumber, item.j.iIp));//打印多表查询中的个别数据
            }

//笛卡尔积是a集合乘b集合,(强调的是乘这个动作),笛卡尔集是做笛卡儿积运算后形成的集合,要严谨

//List addressipList = db.addressip.Where(d=>d.address_ipid !=null && d.address_ip !=null).ToList();
                //List roominfoList = db.roominfo.ToList();
                // var  table_temp = roominfoList.Join(addressipList, e => e.address_ipid, f => f.address_ipid, (e, f) => new { e, f })
                //    .Where(p => p.e.address_ipid == p.f.address_ipid)
                //    .Select(a => new { a.e.campus_name, a.e.building_name, a.e.meter_number, a.f.address_ip });

                // //foreach (var item in table_temp)
                // //{
                // //    Console.WriteLine(String.Join("--", item.campus_name, item.building_name, item.meter_number, item.address_ip));
                // //}
                // //Console.ReadLine();

你可能感兴趣的:(linq,sql,c#)