Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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:在连接数据上的GroupBy之后检索模型数据_C#_Linq_Lambda_Group By - Fatal编程技术网

C# LINQ:在连接数据上的GroupBy之后检索模型数据

C# LINQ:在连接数据上的GroupBy之后检索模型数据,c#,linq,lambda,group-by,C#,Linq,Lambda,Group By,在加入3个表/模型/实体之后,我可以简单地从视图模型中检索数据。但是,当我分配GroupBy时,我无法以正常方式获取数据。我需要从分组数据中获取数据 var modelList = from model1 in db.Model1 join model2 in db.Model2 on model1.id equals model2.model1_id join model3 in db.Model3 on model2.id equa

在加入3个表/模型/实体之后,我可以简单地从视图模型中检索数据。但是,当我分配GroupBy时,我无法以正常方式获取数据。我需要从分组数据中获取数据

var modelList =
          from model1 in db.Model1
          join model2 in db.Model2 on model1.id equals model2.model1_id
          join model3 in db.Model3 on model2.id equals model3.model2_id
          where ((model1.id== 2) && (model.menu_id== 3)) 
          orderby subMenu.SUBMENU_NAME
          select new USER_ACCISSIBLE_SUBMENUE_VIEWMODEL
                      {
                       MODEL_VIEW_MODEL1 = model1,
                       MODEL_VIEW_MODEL2 = model2,
                       MODEL_VIEW_MODEL3 = model3
                      };

        string myData= "";
        foreach (var item in modelList )
        {
         myData+= item.MODEL_VIEW_MODEL1.COLUMN1 + item.MODEL_VIEW_MODEL2.COLUMN2 + item.MODEL_VIEW_MODEL3.COLUMN3;
        }
到目前为止,这一切都很简单。 但是在下面的一行之后,我得到了for-each循环的错误。我已经给出了我的要求的一般形式。我还通过将GroupBy与modelList LINQ一起放置而不是使用modelListGrouped变量进行了测试。但同样的错误。使用GroupBy子句时,项找不到viewmodels。我需要从分组元素中检索数据

var modelListGrouped = modelList .GroupBy(x => x.MODEL_VIEW_MODEL1.id);
foreach (var item in modelListGrouped )
        {
         myData+= item.MODEL_VIEW_MODEL1.COLUMN1 + item.MODEL_VIEW_MODEL2.COLUMN2 + item.MODEL_VIEW_MODEL3.COLUMN3;
        }
返回一个
IEnumerable
。因此,您的foreach应该如下所示:

var modelListGrouped = modelList .GroupBy(x => x.MODEL_VIEW_MODEL1.id);
foreach (var group in modelListGrouped )
{
    // group is now the IEnumerable<T> you had before
    // but also knows group.Key by which this was grouped
    foreach(var item in group)
        myData += item.MODEL_VIEW_MODEL1.COLUMN1 + item.MODEL_VIEW_MODEL2.COLUMN2 + item.MODEL_VIEW_MODEL3.COLUMN3;
}
var modelListGrouped=modelList.GroupBy(x=>x.MODEL\u VIEW\u MODEL1.id);
foreach(modelListGrouped中的var组)
{
//组现在是您以前拥有的IEnumerable
//但也知道分组的group.Key
foreach(组中的var项目)
myData+=item.MODEL\u VIEW\u MODEL 1.COLUMN1+item.MODEL\u VIEW\u MODEL 2.COLUMN2+item.MODEL\u VIEW\u MODEL 3.COLUMN3;
}

GroupBy
返回
i分组的枚举。它们具有分组键
,表示属于该组的项目的枚举。

如果可能,向我们显示输入和所需输出。GroupBy正在为该组的值创建集合。因此,您需要使用Select来枚举整个集合。谢谢:)它起作用了。但是你能告诉我如何在模型上应用distinct.menu_id而不使用组吗?@MuhammadAshikuzzaman我不太明白你的意思…也许最好打开一个新问题?