c# - 有没有办法将两个 LINQ 查询合并为一个?

标签 c# .net linq

我有一个名为 dbRecipes 的数组,其中包含分成几组的食谱列表。例如,晚餐 组可能有三文鱼馅、沙拉和土 bean 泥。甜点组将有一个巧克力融化的熔岩蛋糕。嗯。

我需要在分组列表中显示这些食谱,例如:

Group 1:
  - Recipe 1
  - Recipe 2
Group 2:
  - Recipe 3

dbRecipes 中的每个项目都包含一个 Group 属性,其中包含有关其所在组的信息,以及一个 Recipe 属性,其中包含有关食谱。

我想使用 LINQ 查询来遍历整个事情,但我远不是 LINQ 专家,所以我发现的最好方法是查询所有不同的组,然后遍历每个组那些。这是我的代码:

var groups = (from g in dbRecipes orderby g.Group.GroupOrder select g.Group).Distinct();
foreach (var g in groups)
{
   output.Write("{0}<br/>", g.GroupName);

   var recipes = (from r in dbRecipes where r.Group == g orderby r.DisplayOrder select r.Recipe);
   foreach(var r in recipes)
   {
      output.Write("---{0}<br/>", r.Title);
   }
}

这似乎工作得很好,但是有没有一种方法可以更高效、更简洁或者不需要多次查询?谢谢!

最佳答案

var groups = 
    from r in dbRecipes
    orderby r.DisplayOrder
    group r by r.Group into g
    orderby g.Key.GroupOrder
    select g;

foreach (var g in groups) 
{ 
   output.Write("{0}<br/>", g.Key.GroupName); 

   foreach(var r in g) 
   { 
      output.Write("---{0}<br/>", r.Recipe.Title); 
   } 
} 

关于c# - 有没有办法将两个 LINQ 查询合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8831241/

相关文章:

c# - mvc3-根据模型属性添加CSS类

c# - 使用 Newtonsoft json.net 在 C# 中反序列化 JSON 对象

c# - 如何允许 powershell 从 .net 核心 MVC web 应用程序下载 EXE?

c# - 为什么 IOrderedEnumerable 在 where 过滤后不保留顺序

c# - 大于 Linq Join 中的多个条件

C# WPF Linq Join 4 个表和具有不同参数的Where

c# - 使用带有 ASP.net 数据控件的 POCO 时实现排序/页面功能

c# - 替换字符串中的反斜杠

c# - 如何找到一个值分配给哪个变量?

c# - 处理 StreamReader.ReadLine() 中断 - 服务器不可用