📅  最后修改于: 2023-12-03 14:43:54.332000             🧑  作者: Mango
在LINQ中,使用Join
方法进行内部加入(inner join),从而将两个集合中的元素进行匹配。这是将两个表格JOIN的SQL操作的等效操作。在内部加入中,只有当两个集合中的元素匹配时才会返回结果。在这篇文章中,我们将学习如何使用LINQ进行内部加入操作。
下面是内部加入的基本语法,其中innerList
和outerList
都是需要加入的两个集合,innerKeySelector
和outerKeySelector
则分别是用于比较的键选择器,resultSelector
则定义了返回的结果类型。
var result = from innerItem in innerList
join outerItem in outerList on innerKeySelector(innerItem) equals outerKeySelector(outerItem)
select resultSelector(innerItem, outerItem);
我们将使用两个集合products
和categories
来进行演示。这两个集合都包含一个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)操作非常方便。在这篇文章中,我们学习了使用内部加入操作的基本语法,并通过一个简单的示例演示了如何使用内部加入操作。