[英]group by value with 2 different value and show in Razor view
i have 2 Question list and 1 of the question have 2 language, i will like to show 2 Action Link languages for that question row if it have. 我有2个问题列表,其中1个问题有2种语言,如果有的话,我想为该问题行显示2种Action Link语言。 But i have no idea how to show the another language in a row.
但是我不知道如何连续显示另一种语言。 I only able to show one language.
我只能显示一种语言。
Any Hint or guidance? 有提示或指导吗?
db.SURV_Question_Model data: db.SURV_Question_Model数据:
__________________________________________
Survey ID | Question_ID | Qext_Text |
==========================================
1 | 1 | Q1 |
2 | 2 | Q2 |
==========================================
db.SURV_Question_Ext_Model data: db.SURV_Question_Ext_Model数据:
___________________________________________________
| Quext_Question_ID | Qext_Text | Qext_Language |
===================================================
| 1 | Q1 | ENG |
| 1 | Q1 | GER |
| 2 | Q2 | ENG |
===================================================
What i want to show in Razor view : 我想在Razor视图中显示的内容:
__________________________________________________
Quext_Question_ID | Qext_Text | Qext_Language |
===================================================
1 | Q1 | ENG | GER |
2 | Q2 | ENG |
===================================================
My Controller: 我的控制器:
public ActionResult SURV_Main_Details_QuestionList(int Survey_ID)
{
List<QuestionLinkListViewModel> viewmodel = new List<QuestionLinkListViewModel>();
var query = from r in db.SURV_Question_Ext_Model
join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
where s.Question_Survey_ID == Survey_ID
group new { r, s } by r.Qext_Question_ID into grp
select grp.FirstOrDefault();
foreach (var item in query)
{
viewmodel.Add(new QuestionLinkListViewModel()
{
Survey_ID = Survey_ID,
Question_ID = item.r.Qext_Question_ID,
QuestionText = item.r.Qext_Text,
Languages = item.r.Qext_Language,
});
}
return PartialView(viewmodel);
}
My Razor View: 我的剃刀视图:
@using (Html.BeginForm())
{
<table class="strip">
for (int i = 0; i < Model.Count(); i++)
{
<tr>
<td></td>
<td width="70%">
@Model[i].QuestionText
</td>
<td>
@Html.ActionLink(Model[i].Languages, "SURV_Question_Edit", "SURV_Question", new { Question_ID = Model[i].Question_ID, Languages = Model[i].Languages }, new { @class = "popup-link2" })
@Html.Raw(" ")
@Html.ActionLink(Model[i].Languages2, "SURV_Question_Edit", "SURV_Question", new { Question_ID = Model[i].Question_ID, Languages = Model[i].Languages2 }, new { @class = "popup-link2" })
</td>
</tr>
}
</table>
}
i fixed it by adding Query inside a query: 我通过在查询中添加查询来修复它:
public ActionResult SURV_Main_Details_QuestionList(int Survey_ID)
{
List<QuestionLinkListViewModel> viewmodel = new List<QuestionLinkListViewModel>();
var query = from r in db.SURV_Question_Ext_Model
join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
where s.Question_Survey_ID == Survey_ID
group new { r, s } by r.Qext_Question_ID into grp
select grp.FirstOrDefault();
foreach (var item in query.ToList())
{
var queryLang = from r in db.SURV_Question_Ext_Model
join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
where r.Qext_Question_ID == item.r.Qext_Question_ID
select s;
if (queryLang.Count() == 1)
{
viewmodel.Add(new QuestionLinkListViewModel()
{
Survey_ID = Survey_ID,
Question_ID = item.r.Qext_Question_ID,
QuestionText = item.r.Qext_Text,
Languages = item.r.Qext_Language,
Languages2 = " "
});
}
else if(queryLang.Count() == 2)
{
viewmodel.Add(new QuestionLinkListViewModel()
{
Survey_ID = Survey_ID,
Question_ID = item.r.Qext_Question_ID,
QuestionText = item.r.Qext_Text,
Languages = "ENG",
Languages2 = "GER"
});
}
}
return PartialView(viewmodel);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.