编辑
2025-02-04
C# 应用
00
请注意,本文编写于 91 天前,最后修改于 91 天前,其中某些信息可能已经过时。

目录

摘要
正文

摘要

C#中的LINQ(Language Integrated Query)提供了一种声明式的编程模式,用于操作数据。它允许你用类似SQL的方式查询和操作数据,不论这些数据来自于数据库、XML文档还是内存中的集合。Join操作是LINQ中的一个重要特性,它允许你将两个数据源中的数据基于共同的键值对进行匹配并合并。

正文

运算符描述C#查询表达式语法
Join运算符连接两个序列匹配键的基础join … in … on … equals …

一个例子

定义基础类

C#
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

C#
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}, };

内联

C#
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); }

image.png

左联

C#
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); }

image.png

本文作者:rick

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!