查询或合并一对多关系,而无需重复结果条目

时间:2018-08-21 21:37:00

标签: c# sql-server asp.net-mvc entity-framework one-to-many

我有2个非常大的数据集。第一个“主表”是唯一列表。第二个“参考表”与“主表”是一对多的关系。

目标: 使用跨两个数据集的过滤器进行查询,但显示结果而无需重复“主表”的条目。我不希望用户仅在一对多“参考表”的字段中具有很高的唯一性即可滚动浏览同一订单项的200行。

有什么技巧可以解决这个问题?

我能想到的就是依次将“参考表”的行作为列追加到“主表”中,例如; a_1,b_1,a_2,b_2,...

以下是数据集的示例: data

我正在使用C#,ASP.NET,SQL Server 2016,实体框架

1 个答案:

答案 0 :(得分:0)

通过将查询分为两部分,您可以获得很多功能:

using (MainContext ctx = new MainContext()) {
  var rows =  from main in ctx.Main
              select new 
              {
                Main = main,
                References = from r in ctx.References
                             where r.Id == main.Id
                             select r
              }

  // Do something with your rows
}

这将向数据库发送一个查询,并在Main中每行返回一个实体,具有单独的属性,该属性将包含该Main行的所有元数据。

如果使用(例如)WebAPI调用将其发送回客户端,则客户端上的数据将如下所示:

[{
  main: { id: ..., x: ..., y: ..., z: ...},
  references: [{ a: ..., b: ... }, {a: ..., b: ... }, ... ]
},
...,
]