文明网网站建设,apache 多个网站,使用wordpress的建网站,天长做网站的最近在优化定时任务相关的代码#xff0c;建议是把总查询放到内存中去坐#xff0c;尽量减少打开的数据库连接
1. 内连接
指的是结果生成两张表可以连接的部分
private void button1_Click_1(object sender, EventArgs e){//初始化Student数组Student[] arrStu new Stude…最近在优化定时任务相关的代码建议是把总查询放到内存中去坐尽量减少打开的数据库连接
1. 内连接
指的是结果生成两张表可以连接的部分
private void button1_Click_1(object sender, EventArgs e){//初始化Student数组Student[] arrStu new Student[]{new Student{ID1,SNamezhangsan,Age20},new Student{ID2,SNamelisi,Age21},new Student{ID3,SNamewangwu,Age23},new Student{ID4,SNameliuliu,Age24},};//初始化Product数组Product[] arrPro new Product[]{new Product{ID1,PNameApple,Price2.25},new Product{ID2,PNameOrange,Price5.25},new Product{ID3,PNameBanana,Price7.5},new Product{ID4,PNameStrawBerry,Price6.5},};//标准查询运算符var query arrStu.Join(arrPro, s s.ID, p p.ID, (s, p) new { s.SName, s.Age, p.PName, p.Price });StringBuilder sbRes new StringBuilder();//打印foreach (var item in query){sbRes.AppendFormat(SName{0},Age{1},PName:{2},Price:{3}, item.SName, item.Age, item.PName, item.Price);sbRes.AppendLine();}MessageBox.Show(sbRes.ToString());}
或者另外一种写法 //LINQ语句var query from sItem in arrStujoin pItem in arrProon sItem.ID equals pItem.IDselect new { sItem.SName, sItem.Age, pItem.PName, pItem.Price };//Select后面接一个匿名对象
2. 分组连接
第一个集合中的每个元素与第二个集合中的一组相关元素进行配对
使用 into关键词
Person magnus new(FirstName: Magnus, LastName: Hedlund);
Person terry new(Terry, Adams);
Person charlotte new(Charlotte, Weiss);
Person arlene new(Arlene, Huff);ListPerson people new() { magnus, terry, charlotte, arlene };ListPet pets new()
{new(Name: Barley, Owner: terry),new(Boots, terry),new(Whiskers, charlotte),new(Blue Moon, terry),new(Daisy, magnus),
};// Create a list where each element is an anonymous type
// that contains the persons first name and a collection of
// pets that are owned by them.
var query from person in peoplejoin pet in pets on person equals pet.Owner into gjselect new{OwnerName person.FirstName,Pets gj};foreach (var v in query)
{// Output the owners name.Console.WriteLine(${v.OwnerName}:);// Output each of the owners pets names.foreach (var pet in v.Pets){Console.WriteLine($ {pet.Name});}
}/* Output:Magnus:DaisyTerry:BarleyBootsBlue MoonCharlotte:WhiskersArlene:*/
3. 左外连接
简单理解就是基于第一张表无论第二章表是否有匹配项都放进去
左连接的数据 一定 大于等于 内连接
Person magnus new(Magnus, Hedlund);
Person terry new(Terry, Adams);
Person charlotte new(Charlotte, Weiss);
Person arlene new(Arlene, Huff);Pet barley new(Barley, terry);
Pet boots new(Boots, terry);
Pet whiskers new(Whiskers, charlotte);
Pet bluemoon new(Blue Moon, terry);
Pet daisy new(Daisy, magnus);// Create two lists.
ListPerson people new() { magnus, terry, charlotte, arlene };
ListPet pets new() { barley, boots, whiskers, bluemoon, daisy };var query from person in peoplejoin pet in pets on person equals pet.Owner into gjfrom subpet in gj.DefaultIfEmpty()select new{person.FirstName,PetName subpet?.Name ?? string.Empty};foreach (var v in query)
{Console.WriteLine(${v.FirstName :,-15}{v.PetName});
}record class Person(string FirstName, string LastName);
record class Pet(string Name, Person Owner);// This code produces the following output:
//
// Magnus: Daisy
// Terry: Barley
// Terry: Boots
// Terry: Blue Moon
// Charlotte: Whiskers
// Arlene: reference
1. 执行左外部联接C# 中的 LINQ - C# | Microsoft Learn