📜  LINQ |加入(内部加入)(1)

📅  最后修改于: 2023-12-03 14:43:54.332000             🧑  作者: Mango

LINQ |加入(内部加入)

在LINQ中,使用Join方法进行内部加入(inner join),从而将两个集合中的元素进行匹配。这是将两个表格JOIN的SQL操作的等效操作。在内部加入中,只有当两个集合中的元素匹配时才会返回结果。在这篇文章中,我们将学习如何使用LINQ进行内部加入操作。

基本语法

下面是内部加入的基本语法,其中innerListouterList都是需要加入的两个集合,innerKeySelectorouterKeySelector则分别是用于比较的键选择器,resultSelector则定义了返回的结果类型。

var result = from innerItem in innerList
             join outerItem in outerList on innerKeySelector(innerItem) equals outerKeySelector(outerItem)
             select resultSelector(innerItem, outerItem);
示例

我们将使用两个集合productscategories来进行演示。这两个集合都包含一个ID属性,且products集合包含一个CategoryID属性,它与categories集合中的ID属性进行匹配。我们将使用内部加入操作获取每个产品的类别名称。

public class Product {
    public int ID { get; set; }
    public string Name { get; set; }
    public int CategoryID { get; set; }
}

public class Category {
    public int ID { get; set; }
    public string Name { get; set; }
}

var products = new List<Product> {
    new Product { ID = 1, Name = "Product 1", CategoryID = 1 },
    new Product { ID = 2, Name = "Product 2", CategoryID = 1 },
    new Product { ID = 3, Name = "Product 3", CategoryID = 2 },
    new Product { ID = 4, Name = "Product 4", CategoryID = 3 }
};

var categories = new List<Category> {
    new Category { ID = 1, Name = "Category 1" },
    new Category { ID = 2, Name = "Category 2" },
    new Category { ID = 3, Name = "Category 3" }
};

var result = from product in products
             join category in categories on product.CategoryID equals category.ID
             select new { ProductName = product.Name, CategoryName = category.Name };

foreach (var item in result) {
    Console.WriteLine("Product: {0}, Category: {1}", item.ProductName, item.CategoryName);
}

输出:

Product: Product 1, Category: Category 1
Product: Product 2, Category: Category 1
Product: Product 3, Category: Category 2
Product: Product 4, Category: Category 3

在上面的代码中,我们使用join语句将products集合和categories集合中的元素进行匹配,匹配规则为product.CategoryID = category.ID。然后,我们选择需要返回的结果,并将结果存储在一个匿名类型中。最后,我们将结果打印出来。

总结

在LINQ中,使用Join方法进行内部加入(inner join)操作非常方便。在这篇文章中,我们学习了使用内部加入操作的基本语法,并通过一个简单的示例演示了如何使用内部加入操作。