155.C# LINQ Join操作 c# linq原理
摘要
这个就对应着SQL的Join,连接多个表的操作
正文
运算符 | 描述 | C#查询表达式语法 |
Join | 运算符连接两个序列匹配键的基础 | join … in … on … equals … |
一个例子
定义基础类
class Hero
{
public int HeroNo { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Hero(string name, int age, int heroNo)
{
Name = name;
Age = age;
HeroNo = heroNo;
}
}
class Army
{
public int HeroNo { get; set; }
public int ArmyNo { get; set; }
public int Qty { get; set; }
}
初使化List
List<Hero> heroes = new List<Hero>
{
new Hero("张飞",38,100),
new Hero("刘备",40,101),
new Hero("关羽",39,102),
new Hero("曹操",45,103),
new Hero("孙权",31,104)
};
List<Army> armies = new List<Army>
{
new Army(){ArmyNo=1,HeroNo=100,Qty=10000},
new Army(){ArmyNo=2,HeroNo=100,Qty=30000},
new Army(){ArmyNo=3,HeroNo=101,Qty=40000},
new Army(){ArmyNo=4,HeroNo=102,Qty=45000},
new Army(){ArmyNo=5,HeroNo=103,Qty=18000},
new Army(){ArmyNo=6,HeroNo=103,Qty=80000},
};
内联
var ret = from h in heroes
join a in armies on h.HeroNo equals a.HeroNo
select new
{
Name = h.Name,
ArmyNo = a.ArmyNo,
Qty = a.Qty
};
foreach (var item in ret)
{
lstMain.Items.Add(item.Name + " " + item.ArmyNo + " " + item.Qty);
}
左联
var ret = from h in heroes
join a in armies on h.HeroNo equals a.HeroNo into t
from a in t.DefaultIfEmpty()
select new
{
Name = h.Name,
ArmyNo = a == null ? 0 : a.ArmyNo,
Qty = a == null ? 0 : a.Qty
};
foreach (var item in ret)
{
lstMain.Items.Add(item.Name + " " + item.ArmyNo + " " + item.Qty);
}
相关文章
- 电脑键盘指法+常用快捷键文字及图片详解
- 机械键盘灯亮按键无反应(机械键盘灯亮按键无反应什么原因)
- Keychron Q14 Max键盘开售:小键盘左置、Alice配列,1298元起
- Keychron K15 Max矮轴机械键盘开售:75%Alice配列,567元起
- 单手35键设计,Keychron旗下Lemokey推出X0机械键盘
- 线上故障排查全套路盘点,运维大哥请自查
- 学习Pandas中操作Excel,看这一篇文章就够了
- 对不起,我把APP也给爬了(对不起我把你弄脏)
- Navigating global shifts and forging a path for emerging economies
- 多目标追踪小抄:快速了解MOT的基本概念