我有两个要从中获取数据的表。
让我们称他们为“ 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/