C# 在不复制结果项的情况下查询或合并一对多关系
我有两个非常大的数据集。第一个“主表”是一个唯一的列表。第二个“参考表”是与“主表”的一对多关系 目标: 跨两个数据集使用筛选器进行查询,但显示结果时不复制“主表”的条目。我不希望用户仅仅因为一对多“参考表”的字段是高度唯一的,就滚动浏览同一行项目的200行 有什么方法可以解决这个问题吗 我所能想到的就是将“引用表”的行作为列顺序追加到“主表”中,如;a_1,b_1,a_2,b_2 以下是数据集的示例:C# 在不复制结果项的情况下查询或合并一对多关系,c#,sql-server,asp.net-mvc,entity-framework,one-to-many,C#,Sql Server,Asp.net Mvc,Entity Framework,One To Many,我有两个非常大的数据集。第一个“主表”是一个唯一的列表。第二个“参考表”是与“主表”的一对多关系 目标: 跨两个数据集使用筛选器进行查询,但显示结果时不复制“主表”的条目。我不希望用户仅仅因为一对多“参考表”的字段是高度唯一的,就滚动浏览同一行项目的200行 有什么方法可以解决这个问题吗 我所能想到的就是将“引用表”的行作为列顺序追加到“主表”中,如;a_1,b_1,a_2,b_2 以下是数据集的示例: 我正在使用C#、ASP.NET、SQL Server 2016、Entity Framew
我正在使用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: ... }, ... ]
},
...,
]
如果需要以表格格式显示此数据,则可以使用父表和子表,其中主表数据显示在父表中,并且每行有一个图标用于展开/折叠数据,一旦用户展开行,则子表将加载其引用记录…这很完美,谢谢你如果你解释下你想如何使用数据,我可以详细说明如何操作数据。请你看一下关于数据/逻辑的更多细节。我想你在这里的回答与这个问题有关。这个问题被删除了?我暂时解决了这个问题。请检查这个: