C# SQL父子表选择查询帮助

标签 c# sql sql-server asp.net-mvc

我有两个要从中获取数据的表。

让我们称他们为“ parent ”和“ child ”。 “Parent”表在“Children”表中有很多记录。 (一对多)

我的问题是我想找到一种有效的方法来将两个表包含的数据显示到我的 ASP.NET MVC 应用程序中。我的方法是从“父”中选择所有记录,然后遍历每个记录,从“子”中选择数据。

所以我需要帮助设计 SQL Server 05 的查询,它可以更有效地为 C# 获取数据,我计划创建类型类,“父”类将有一个“列表”,在我的 View 中我可以循环输出值。

public class Parent_Type
{
    public string Name { get; set; }
    public List<Children_Type> Children { get; set; }
}


public class Children_Type
{
    public string Name { get; set; }
}

数据需要显示如下:(“父”记录的名称然后是“子”记录的列表)

“父123”

  • “ child 1”
  • “ child 2”
  • “ child 3”

“父124”

  • “ child 1”
  • “ child 2”
  • “ child 3”

最佳答案

我会一次提取所有数据,然后以编程方式运行它。

SELECT Parent.Id, Parent.Name FROM Parent 
LEFT OUTER JOIN
SELECT Child.Id AS ChildId, Child.Name AS ChildName FROM Child
ON
Child.ParentId = Parent.Id
ORDER BY Parent.Name

当您取回数据时, parent 将重复,因此您需要对其进行过滤。您可以通过 LINQ 通过提供父比较或通过 for 循环来执行此操作。遍历折叠在唯一父级上的列表,因为每个记录实际上代表一个 child 或没有 child 的 parent 。

关于 LINQ 的“distinct”的信息是 available here .

关于C# SQL父子表选择查询帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1284463/

相关文章:

sql - 重命名 Entity Framework T4 模板生成的类名?

c# - 如果将两个类的函数放在一个委托(delegate)中会发生什么?

sql - 使用 TIMEZONE 查询 Oracle TIMESTAMP

sql - 从 msdb.dbo.sysjobhistory 获取最近 24 小时的作业记录

sql - 如何确定 SQL Server 中是否存在数据库角色?

javascript - 从数组中的 SQL 捕获 PHP 变量并输出到 JavaScript 变量

sql - 如何在存储过程中创建索引?

c# - 无法将类型 System.Data.Entity.Core.Objects.ObjectResult 隐式转换为 System.Data.Objects.ObjectResult

c# - 为什么更新外键后引用约束不一致?

C# 相当于 std::sort 和 std::unique