我有 2 个非常大的数据集。第一个“主表”是一个独特的列表。第二个“Reference Table”与“Main Table”是一对多的关系。
目标: 使用跨两个数据集的过滤器进行查询,但显示结果而不复制“主表”的条目。我不希望用户滚动浏览同一行项目的 200 行只是因为一对多“引用表”的字段非常独特。
有什么技术可以解决这个问题吗?
我能想到的就是将“引用表”的行作为列顺序附加到“主表”,例如; a_1, b_1, a_2, b_2,...
这是数据集的示例: data
我正在使用 C#、ASP.NET、SQL Server 2016、 Entity Framework
最佳答案
将查询分成两部分可以获得很多功能:
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: ... }, ... ]
},
...,
]
关于c# - 在不复制结果条目的情况下查询或合并一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957017/