当前位置: 首页 > 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; }}}
}

http://www.lryc.cn/news/571946.html

相关文章:

  • Uniapp 中 onShow 与 onLoad 的执行时机解析
  • 【JAVA】的SPI机制
  • new()和new[]有什么区别?
  • tomcat 配置规范
  • springboot入门之路(一)
  • 【软考高级架构设计师】——2024年下半年软考真题(回忆版)
  • 【JUC】显示锁
  • 循环神经网络(RNN):序列数据处理的强大工具
  • 【面试题001】生产环境中如何排查MySQL CPU占用率高达100%?
  • NAT 与代理服务器 -- NAT,NAPT,正向代理,反向代理
  • 前端面试专栏-主流框架:10. React状态管理方案(Redux、Mobx、Zustand)
  • 【C语言极简自学笔记】重讲运算符
  • LVS+Keepliaved高可用群集
  • 【MySQL数据库 | 第五篇】DDL操作2
  • RabbitMQ概念
  • 深入解析线程池与队列系统设计原理
  • 【网工】华为配置专题进阶篇②
  • Oracle 创建定时任务
  • Web服务器/tmp隔离的安全性与绕过分析
  • VSCode 插件 Remote - SSH:开启高效远程开发之旅
  • SpringBoot电脑商城项目--新增收获地址
  • 系统的性能优化
  • kettle好用吗?相较于国产ETL工具有哪些优劣之处?
  • git的使用——初步认识git和基础操作
  • 【Datawhale组队学习202506】零基础学爬虫 01 初始爬虫
  • Goursat问题解的公式推导
  • TikTok 矩阵如何快速涨粉
  • html中的table标签以及相关标签
  • 微信二次开发,对接智能客服逻辑
  • 百度下拉框出词技术解密:72小时出下拉词软件原理分享