2016-01-21 37 views
0

加入3個表/模型/實體後,我可以簡單地從視圖模型中檢索數據。但是當我分配GroupBy時,我無法以正常方式獲取數據。我需要從分組數據中獲取數據。LINQ:在加入數據後檢索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變量。但同樣的錯誤。 Item使用GroupBy子句時找不到視圖模型。我需要從分組元素中檢索數據。

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; 
     } 
+0

如果可能,向我們顯示輸入和所需的輸出。 –

+0

GroupBy正在爲該組的值創建一個集合。所以你需要使用Select來枚舉集合。 – jdweng

回答

0

GroupBy返回IEnumerable<IGrouping<T>>。因此,您的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; 
} 

GroupBy返回IGrouping枚舉。這些分組具有Key的分組,並表示屬於該組的一部分的項目的枚舉。

+0

謝謝:)它的工作。但是你也可以告訴如何在不使用組的情況下對model.menu_id應用不同的分辨率嗎? –

+0

@MuhammadAshikuzzaman我並不完全知道你的意思......也許最好開一個新的問題? –