多种数据库混合查询
MySQL:用户表,Monogdb:订单表,统计用户订单,及总订单金额
using DiffDBQuery.Util.model; namespace DiffDBQuery { internal class Program { static void Main(string[] args) { // 1. 生成虚拟用户数据(MySQL查询结果) var users = new List<User> { new User { Id = 1, Name = "张三", Age = 28 }, new User { Id = 2, Name = "李四", Age = 35 }, new User { Id = 3, Name = "王五", Age = 22 }, new User { Id = 4, Name = "赵六", Age = 40 }, // 无订单用户 new User { Id = 5, Name = "钱七", Age = 31 } // 有多个订单的用户 }; // 2. 生成虚拟订单数据(MongoDB查询结果) var orders = new List<Order> { new Order { Id = "o1", UserId = 1, Total = 199.99 }, new Order { Id = "o2", UserId = 1, Total = 299.50 }, new Order { Id = "o3", UserId = 2, Total = 599.00 }, new Order { Id = "o4", UserId = 2, Total = 89.90 }, new Order { Id = "o5", UserId = 3, Total = 150.00 }, new Order { Id = "o6", UserId = 5, Total = 350.50 }, new Order { Id = "o7", UserId = 5, Total = 120.30 }, new Order { Id = "o8", UserId = 5, Total = 899.99 } }; // 3. 执行联合查询(模拟跨库关联) var result = from user in users join order in orders on user.Id equals order.UserId into userOrders select new { UserId = user.Id, UserName = user.Name, Age = user.Age, OrderCount = userOrders.Count(), TotalOrders = userOrders.Sum(o => o.Total), }; // 4. 输出查询结果 Console.WriteLine("联合查询结果:"); Console.WriteLine("------------------------------------------------"); Console.WriteLine("用户ID | 用户名 | 年龄 | 订单数量 | 总订单金额"); Console.WriteLine("------------------------------------------------"); foreach (var item in result) { Console.WriteLine($"{item.UserId,-6} | {item.UserName,-4} | {item.Age,-3} | {item.OrderCount,-8} | {item.TotalOrders:C}"); } Console.ReadLine(); } } }
qq:505645074