Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq和实体框架创建适当的模型_C#_Linq_Entity Framework - Fatal编程技术网

C# 使用linq和实体框架创建适当的模型

C# 使用linq和实体框架创建适当的模型,c#,linq,entity-framework,C#,Linq,Entity Framework,我对LINQ很陌生,我无法得到我需要的东西。 最后,我需要以下模型: public class MyModel { ... a quite long list of properties ... public List<SubModel> Submodels {get;set;} } 上面给出了匿名类型,其中每个元素都有MyModel和Submodel,但这不是我需要的。 从这里,我不知何故需要得到如上所述的结构。我认为我应该以某种方式对数据或其他东西进行分组

我对
LINQ
很陌生,我无法得到我需要的东西。 最后,我需要以下模型:

public class MyModel {
     ... a quite long list of properties ...
     public List<SubModel> Submodels {get;set;}
}
上面给出了匿名类型,其中每个元素都有MyModel和Submodel,但这不是我需要的。 从这里,我不知何故需要得到如上所述的结构。我认为我应该以某种方式对数据或其他东西进行分组

编辑 我需要这个,因为以后我必须添加

a) MyModel的一个属性,可以对“MySubModels列表中的第一个元素”进行一些计算

b) MyModel的另一个属性,它将对“MySubModels列表中的第三个元素”进行一些计算

等等


另外,我不能使用导航属性,因为连接是使用两列值(Key和RevId)完成的。它们在实体“MyModel”和“MySubModel”中都不是唯一的,但是Key+RevId的组合是唯一的。

如果您有外键关系,则应该有导航属性,其中包含您需要的数据。。。查找linq to实体的.Include()扩展名。。。如果您有许多myModels,那么您当前的结果可能是最好的解决方案,因为您可以避免多次查询。只需忽略额外的数据我已经修改了一个代码,所以现在使用两列完成连接。这是错误。我没有导航属性。基本上是因为我需要使用两列进行连接。密钥不是唯一的。我必须使用“RevId+Key”进行连接。我已经修改了一个代码,所以现在连接是使用两列完成的。是虫子。@renathy好了,我这边的天气已经转晴了。。。这能解决你这边的问题吗?如果是这样的话,只需回答你自己的问题并接受它(或删除问题…你的电话)不,它无法解决问题。它只是展示了我现在所拥有的。但我需要另一种结构。现在的结果是一些匿名类型同时包含模型和子模型,我需要一个包含子模型列表的模型。稍后我需要使用“第一”子模型、“第三”子模型和其他一些模型。@renathy那么您需要的只是一个群组?更改了答案以匹配。。。
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 })
                .AsEnumerable() //get the data and map objects
                .GroupBy(x => x.MyModel) //group them
                .Select(group => new { MyModel = group.Key, Submodels = group.Select(x => x.Submodel).ToList() });            
}
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 })
                .AsEnumerable() //get the data and map objects
                .GroupBy(x => x.MyModel) //group them
                .Select(group => new { MyModel = group.Key, Submodels = group.Select(x => x.Submodel).ToList() });            
}