在加入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子句时,Item无法找到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;
}
答案 0 :(得分: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
,并表示属于该组的项目的枚举。