无法使用Join作为方法语法的外键

时间:2019-11-28 07:40:25

标签: c# linq

我有两个表:类别(父级)和产品(子级)。

我可以将内部联接与LINQ查询语法一起使用。但是用方法语法,我听不到。 p.不会加载CategoryID

var db = new NorthwindEntities();
        var cats = db.Categories;
        var prods = db.Products;

        var catProducts1 = from c in db.Categories
                           join p in db.Products
                           on c.CategoryID equals p.CategoryID
                           select new { c.CategoryName, p.ProductName };

        var catProducts2 = db.Categories
                .Join(db.Products, c=>c.CategoryID,p=>p);

1 个答案:

答案 0 :(得分:1)

以下是针对您的情况的Join lamda语法的正确语法:

var catProducts2 = db.Categories.Join(db.Products, 
                     c => c.CategoryId, 
                     p => p.CategoryID, 
                    (c, p) => new { c.CategoryName, p.ProductName })
                  .Select(s => new { s.CategoryName, s.ProductName });

您可以在小提琴中查看上述查询的用法-https://dotnetfiddle.net/C3N2I2