Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分组并通过Linq和嵌套foreach连接两个表_C#_Linq - Fatal编程技术网

C# 分组并通过Linq和嵌套foreach连接两个表

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

我有一个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 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循环中选择产品名称?