当前位置: 首页 > news >正文

C#List的join查询

有时需要用两个List做join查询,可以这样做

using System;
using System.Collections.Generic;
using System.Linq;namespace SystemInfoCheck
{public class Program{public static void Main(string[] args){//两个List进行join查询,然后根据条件进行进一步筛选,筛选中符合条件的A列表string bId = "1";//查询和Bid="1"关联的A列表List<A> list1 = new List<A>();list1.Add(new A { Id = "1" });list1.Add(new A { Id = "2" });list1.Add(new A { Id = "3" });list1.Add(new A { Id = "4" });List<BToA> list2 = new List<BToA>();list2.Add(new BToA { Id = "X1", AId = "1", BId = "1" });list2.Add(new BToA { Id = "X2", AId = "2", BId = "1" });list2.Add(new BToA { Id = "X3", AId = "3", BId = "2" });list2.Add(new BToA { Id = "X4", AId = "4", BId = "2" });List<A> result = (from a in list1join btoa in list2 on a.Id equals btoa.AIdwhere btoa.BId == bIdselect a).ToList();if (result != null && result.Count > 0){result.ForEach(item =>{ Console.WriteLine("AId="+item.Id);});}Console.ReadLine();}public class A{public string Id { get; set; }}public class BToA{public string Id { get; set; }public string AId { get; set; }public string BId { get; set; }}}
}

另外如果两个List都很大的情况,我个人非常不建议用join,还是老老实实多查几遍更快一些,像是这样:

using System;
using System.Collections.Generic;
using System.Linq;namespace SystemInfoCheck
{public class Program{public static void Main(string[] args){//两个List进行join查询,然后根据条件进行进一步筛选,筛选中符合条件的A列表string bId = "1";//查询和Bid="1"关联的A列表List<A> list1 = new List<A>();list1.Add(new A { Id = "1" });list1.Add(new A { Id = "2" });list1.Add(new A { Id = "3" });list1.Add(new A { Id = "4" });List<BToA> list2 = new List<BToA>();list2.Add(new BToA { Id = "X1", AId = "1", BId = "1" });list2.Add(new BToA { Id = "X2", AId = "2", BId = "1" });list2.Add(new BToA { Id = "X3", AId = "3", BId = "2" });list2.Add(new BToA { Id = "X4", AId = "4", BId = "2" });List<string> aIds = list2.Where(btoa => btoa.BId == bId).Select(b => b.AId).ToList();List<A> result = null;if (aIds != null && aIds.Count() > 0){result = list1.Where(a => aIds.Contains(a.Id)).ToList();}if (result != null && result.Count > 0){result.ForEach(item =>{ Console.WriteLine("AId="+item.Id);});}Console.ReadLine();}public class A{public string Id { get; set; }}public class BToA{public string Id { get; set; }public string AId { get; set; }public string BId { get; set; }}}
}

相关文章:

  • 分布式——分布式系统设计二——幂等性详解
  • 大事务导致数据库连接池耗尽分析与解决方案
  • 250618-通过Artifacts功能集成Open-WebUI与Gradio
  • Docker PowerJob
  • Docker搭建RabbitMQ集群环境
  • less-9-基于时间的GET单引号盲注
  • 客户端软件开发技术选择、填空解析
  • css 制作一个可以旋转的水泵效果
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | IncrementingCounter(递增计数器)
  • AiPy 监控视频智能监察:人像一键抽取+可反复执行程序落地
  • 本地使用 modelscope 大模型 来进行文本生成视频(Text-to-Video)
  • pythonday50
  • OpenLayers 加载GeoTIFF影像
  • Antv G2入门教程
  • Java常量与数据类型
  • 面向智能制造场景的永磁同步电机预测控制系统设计
  • day036-lsyncd实时同步服务与网站存储架构
  • Day04_C语言基础数据结构重点复习笔记20250618
  • Happy-LLM task2 第一章 NLP 基础概念(2天)
  • 27.自连接
  • 网站大量死链/网络营销策划方案
  • 图书馆网站制作/seo原创工具
  • 学设计师培训班/杭州网站优化方案
  • 企业建立网站账户如何做/seo技术分享免费咨询
  • 商城通网站建设/今日世界杯比分预测最新
  • 建设工程招标网站/成功营销案例100例