使用 lambda 表达式连接 2 和 3 表的简单示例

Posted

技术标签:

【中文标题】使用 lambda 表达式连接 2 和 3 表的简单示例【英文标题】:Simple Examples of joining 2 and 3 table using lambda expression 【发布时间】:2011-04-30 05:58:28 【问题描述】:

谁能给我看两个使用LAMBDA EXPRESSION(连接2个和3个表的简单示例 例如使用 Northwind 表(Orders、CustomerID、EmployeeID)?

【问题讨论】:

从这里挑选:msdn.microsoft.com/en-us/vcsharp/aa336746 谢谢,但我想要 LAMDA EXPRESSION 版本 【参考方案1】:

加入3个表的代码是:

var list = dc.Orders.
                Join(dc.Order_Details,
                o => o.OrderID, od => od.OrderID,
                (o, od) => new
                
                    OrderID = o.OrderID,
                    OrderDate = o.OrderDate,
                    ShipName = o.ShipName,
                    Quantity = od.Quantity,
                    UnitPrice = od.UnitPrice,
                    ProductID = od.ProductID
                ).Join(dc.Products,
                        a => a.ProductID, p => p.ProductID,
                        (a, p) => new
                        
                            OrderID = a.OrderID,
                            OrderDate = a.OrderDate,
                            ShipName = a.ShipName,
                            Quantity = a.Quantity,
                            UnitPrice = a.UnitPrice,
                            ProductName = p.ProductName
                        );

谢谢

【讨论】:

这是一个很好的例子。谢谢!【参考方案2】:

尝试使用 lambda 表达式加入 2 个表

var list = dataModel.Customers                     
.Join( dataModel.Orders, 
      c => c.Id, 
      o => o.CustomerId, 
      (c, o) => new
                 
                     CustomerId = c.Id, 
                     CustomerFirstName = c.Firstname, 
                    OrderNumber = o.Number
                 );

【讨论】:

谢谢,但您能指导我如何在此代码上使用 Select 投影仪吗?我该怎么做才能加入 3 Table?谢谢【参考方案3】:
public void Linq102() 
 

string[] categories = new string[]  
    "Beverages",   
    "Condiments",   
    "Vegetables",   
    "Dairy Products",   
    "Seafood" ;  

List<Product> products = GetProductList(); 

var q = 
    from c in categories 
    join p in products on c equals p.Category 
    select new  Category = c, p.ProductName ; 

foreach (var v in q) 
 
    Console.WriteLine(v.ProductName + ": " + v.Category);  
 

【讨论】:

以上是关于使用 lambda 表达式连接 2 和 3 表的简单示例的主要内容,如果未能解决你的问题,请参考以下文章

lambda 表达式使用 select 和 where 子句连接多个表

多组连接 lambda 到表达式树

读Java8函数式编程笔记06_Lambda表达式编写并发程序

2017-6-1 Linq表达式 Lambda 表达式

(Linq/Lambda) 使用 2 个 DBContext 连接 2 个或更多表

Linq to SQL 使用 Lambda 语法进行左外连接并在 2 列上连接(复合连接键)