位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# join 查询

提问人:刘团圆发布时间:2020-12-11

    刚才甩一个共享的键字段(ID)创建的customers和orders列表等数据集可以执行join查询,即可以用一个查询搜索两个列表中相关的数据,用键字段把结果连接起来。这类似于SQL数据查询语言中的JOIN操作。LINQ在査询语法中提供了join命令,如下面的示例所示。


试一试  Join 查询:BeginningCSharp7_22 11_JoinQuery\Program.cs

按照下面的歩骤在Visual Studio 2017中创建示例:

(1)在 C:\BeginningCSharp7\Chapter22目录中创建一个新的控制台应用程序 BeginningCSharp7_22_U_ JoinQueryo

(2)从前面的示例中复制用来创建Customer类和Order微代码,以及初始化customers列表(List<Customer> customers)和orders列表(List<Order> orders)的代码。

(3)在Main()方法的customers和orders列表初始化之后,输入如下所示的查询:

var queryResults =

    from c in customers

    join o in orders on c.ID equals o.ID

    select new { c.ID, c.City, SalesBefore = c.Sales, NewOrder = o.Amount,

                          SalesAfter = c.Sales+o.Amount };

(4)用前面例子中使用的标准foreach查询处理循环结束程序:

    foreach (var item in queryResults)

    {

        WriteLine(item);

    }

(5)编译并执行程序,结果如下:

{ ID = P, City = Tehran, SalesBefore = 7000, NewOrder = 100, SalesAfter = 7100 }

{ ID = Q, City = London, SalesBefore = 8000, NewOrder = 200, SalesAfter = 8200 }

{ ID = R, City = Beijing, SalesBefore = 9000, NewOrder = 300, SalesAfter = 9300 }

{ ID = S, City = Bogota, SalesBefore = 1001, NewOrder = 400, SalesAfter = 1401 }

{ ID = T, City = Lima, SalesBefore = 2002, NewOrder = 500, SalesAfter = 2502 }

Program finished, press Enter/Return to continue:


示例说明

Customer类和Order类以及customers和orders列表的声明和初始化与前面示例中的相同。

查询使用join关键字通过Customer类和Order类的ID字段,把每个顾客与其对应的订单连接起来:

  var queryResults =

      from c in customers

      join o in orders on c.ID equals o.ID

  on关键字之后是键字段(ID)的名称,equals关键字指定另一个集合中的对应字段。查询结果仅包含两个集合中ID字段值相同的对象数据。

  select语句投影了一个带指定属性的新数据类型,因此可以清楚地看到最初的总销售量、新订单和最终的新总销售量:

    select new { c.ID, c.City, SalesBefore = c.Sales, NewOrder = o.Amount,SalesAfter = c.Sales+o.Amount };

  这个程序没有在customer对象中递增总销售量,但可以轻松地在自己的业务逻辑中完成这一任务。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部