【发布时间】:2015-04-27 12:30:19
【问题描述】:
我对@987654322@ 很陌生,我无法得到我需要的东西。 最后我需要以下模型:
public class MyModel {
... a quite long list of properties ...
public List<SubModel> Submodels {get;set;}
}
MyModel 包含一个子模型元素列表,每个模型大约有 50 个子模型。
为了得到这个,我正在写这个查询:
using (var db = new MyDataContext())
{
var query = db.MyModels.As Queryable().Where(x => x.RevId == revId);
var res = query.Join(db.MySubModels,
pb => new { pb.Key, pb.RevId},
f => new { f.Key, f.RevId}
(pb, f) => new { MyModel = pb, Submodel = f });
}
上面给了我匿名类型,其中每个元素都有 MyModel 和 Submodel,但这不是我需要的。 由此我需要以某种方式获得如上所述的结构。我认为我应该以某种方式对数据或其他内容进行分组。
编辑 我需要这个,因为稍后我必须添加
a) MyModel 的一个属性,它将对“MySubModels 列表中的第一个元素”进行一些计算
b) MyModel 的另一个属性,它将对“MySubModels 列表中的第三个元素”进行一些计算
等等
附:我不能使用导航属性,因为加入是使用两列值(键和 RevId)完成的。它们在实体“MyModel”和“MySubModel”中都不是唯一的,但 Key + RevId 的组合将是唯一的。
【问题讨论】:
-
如果您有外键关系,则应该有包含您需要的数据的导航属性...查找 .Include() 用于 linq 到实体的扩展...msdn.microsoft.com/en-us/library/bb738708(v=vs.110).aspx
-
tbh 如果您有许多 myModel,您当前的结果可能是最好的解决方案,因为您可以避免多次查询。忽略多余的数据
-
我已经修改了一个代码,所以现在连接是使用两列完成的。这是错误。
标签: c# linq entity-framework