C# 分组并通过Linq和嵌套foreach连接两个表
我有一个LINQ查询:C# 分组并通过Linq和嵌套foreach连接两个表,c#,linq,C#,Linq,我有一个LINQ查询: var Linq6 = from c in northwindEntities.Categories join p in northwindEntities.Products on c.CategoryID equals p.CategoryID group c by c.CategoryName into Category select
var Linq6 = from c in northwindEntities.Categories
join p in northwindEntities.Products on c.CategoryID equals p.CategoryID
group c by c.CategoryName into Category
select Category;
foreach (var item in Linq6)
{
Console.WriteLine(item.Key);
foreach (var i in item)
{
Console.WriteLine($" {i.CategoryName}");
}
}
但是上面的LINQ查询提供了以下输出:
Beverages
Beverages
Beverages
Beverages
Beverages
Beverages
Beverages
Beverages
Beverages
Beverages
Beverages
Beverages
Beverages
Condiments
Condiments
Condiments
Condiments
Condiments
Condiments
Condiments
Condiments
Condiments
Condiments
Condiments
Condiments
Condiments
Confections
Confections
Confections
Confections
Confections
Confections
Confections
Confections
Confections
Confections
Confections
Confections
Confections
Confections
Dairy Products
Dairy Products
Dairy Products
Dairy Products
Dairy Products
Dairy Products
Dairy Products
Dairy Products
Dairy Products
Dairy Products
Dairy Products
Grains/Cereals
Grains/Cereals
Grains/Cereals
Grains/Cereals
Grains/Cereals
Grains/Cereals
Grains/Cereals
Grains/Cereals
Meat/Poultry
Meat/Poultry
Meat/Poultry
Meat/Poultry
Meat/Poultry
Meat/Poultry
Meat/Poultry
Produce
Produce
Produce
Produce
Produce
Produce
Seafood
Seafood
Seafood
Seafood
Seafood
Seafood
Seafood
Seafood
Seafood
Seafood
Seafood
Seafood
Seafood
饮料
饮料
饮料
饮料
饮料
饮料
饮料
饮料
饮料
饮料
饮料
饮料
饮料
调味品
调味品
调味品
调味品
调味品
调味品
调味品
调味品
调味品
调味品
调味品
调味品
调味品
糖果
糖果
糖果
糖果
糖果
糖果
糖果
糖果
糖果
糖果
糖果
糖果
糖果
糖果
乳制品
乳制品
乳制品
乳制品
乳制品
乳制品
乳制品
乳制品
乳制品
乳制品
乳制品
谷物
谷物
谷物
谷物
谷物
谷物
谷物
谷物
肉类/家禽
肉类/家禽
肉类/家禽
肉类/家禽
肉类/家禽
肉类/家禽
肉类/家禽
产生
产生
产生
产生
产生
产生
海鲜
海鲜
海鲜
海鲜
海鲜
海鲜
海鲜
海鲜
海鲜
海鲜
海鲜
海鲜
海鲜
实际上,我想要的是第二个foreach循环来打印产品名称,而不是我找不到的类别名称。有人能帮忙吗?需要这样做:
from c in northwindEntities.Categories
join p in northwindEntities.Products on c.CategoryID equals p.CategoryID
group c by c.CategoryName into Category
select new { CategoryName = Category.Key, Products = Category.ToList() };
然后,您可以迭代名称和需要执行此操作的产品:
from c in northwindEntities.Categories
join p in northwindEntities.Products on c.CategoryID equals p.CategoryID
group c by c.CategoryName into Category
select new { CategoryName = Category.Key, Products = Category.ToList() };
然后,您可以迭代名称和产品您需要首先分组,然后加入这两个集合,如
var Linq6 = (from p in northwindEntities.Products
group p by p.CategoryID into grp
join c in northwindEntities.Categories on grp.Key equals c.CategoryID
select new
{
Key = c.CategoryName,
Products = grp.ToList()
}).ToList();
foreach (var item in Linq6)
{
Console.WriteLine(item.Key);
foreach (var i in item.Products)
{
Console.WriteLine($" {i.ProductName}");
}
}
输出:
您需要首先分组,然后像这样加入这两个集合
var Linq6 = (from p in northwindEntities.Products
group p by p.CategoryID into grp
join c in northwindEntities.Categories on grp.Key equals c.CategoryID
select new
{
Key = c.CategoryName,
Products = grp.ToList()
}).ToList();
foreach (var item in Linq6)
{
Console.WriteLine(item.Key);
foreach (var i in item.Products)
{
Console.WriteLine($" {i.ProductName}");
}
}
输出:
您如何选择
产品而不是类别
?您的意思是什么?我需要先显示类别名称。@bit是正确的,请尝试使用此控制台。WriteLine($“{I.ProductName}”)
而不是控制台。WriteLine($“{I.CategoryName}”)
否。这不起作用。您如何选择产品而不是类别?我需要分类才能首先显示分类名称。@bit是正确的,请尝试使用此控制台.WriteLine($“{I.ProductName}”)
而不是控制台.WriteLine($“{I.CategoryName}”)
否。这不管用。听到这个消息很高兴,请在答案左侧打勾,使其变为绿色:)很高兴听到,请在答案左侧勾选绿色:)如何在第二个foreach循环中选择产品名称?如何在第二个foreach循环中选择产品名称?