多种数据库混合查询

MySQL:用户表,Monogdb:订单表,统计用户订单,及总订单金额

image

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();
        }
    }
}

 

posted @ 2025-07-31 15:26  CHHC  阅读(11)  评论(0)    收藏  举报