C# 在MVC视图中按相似节点数显示XML节点值?
是否仍然可以将xml节点值按相似的顺序分组为数字?我试着输出下面的值,但是我不能得到我想要的值。请在这方面指导我。谢谢 我的答案是数据库中的数据样本:(提取后将得到C1和C2) 能够在MVC中查看:C# 在MVC视图中按相似节点数显示XML节点值?,c#,asp.net-mvc-4,for-loop,razor,linq-to-xml,C#,Asp.net Mvc 4,For Loop,Razor,Linq To Xml,是否仍然可以将xml节点值按相似的顺序分组为数字?我试着输出下面的值,但是我不能得到我想要的值。请在这方面指导我。谢谢 我的答案是数据库中的数据样本:(提取后将得到C1和C2) 能够在MVC中查看: c1 c2 c2 我想要的是: c1 - 1 c2 - 2 我的控制器: public ActionResult SURV_Answer_Result(int Survey_ID, string Language = "ENG") { List<Answer
c1
c2
c2
我想要的是:
c1 - 1
c2 - 2
我的控制器:
public ActionResult SURV_Answer_Result(int Survey_ID, string Language = "ENG")
{
List<AnswerQuestionViewModel> viewmodel = new List<AnswerQuestionViewModel>();
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
select new { r, s };
var viewModel = new AnswerQuestionViewModel();
viewModel.Survey_ID = Survey_ID;
string[] resultanswer = new string[queryResult.Count()];
foreach (var item in query.ToList())
{
string str = item.s.Answer_Data;
XElement qconfig;
qconfig = XElement.Parse(str);
string value = item.s.Question_Type;
int i = 0;
switch (value)
{
case "Choices":
{
XElement ChoicesType =
(from node in qconfig.Elements("ChoicesType")
select node).SingleOrDefault();
viewModel.ChoiceType = ChoicesType.Value;
XElement ChoicesAns =
Here is i get the answer data ===>> (from node in qconfig.Elements("Answer")
select node).SingleOrDefault();
resultanswer[i++] = ChoicesAns.Value;
viewModel.ResultAnswer = resultanswer;
}
break;
case "Multiple_Line":
{
// do nothing
}
break;
viewmodel.Add(new AnswerQuestionViewModel()
{
ResultAnswer = viewModel.ResultAnswer
});
}
return View(viewmodel);
}
}
public ActionResult SURV\u Answer\u Result(int-Survey\u ID,string Language=“ENG”)
{
列表视图模型=新列表();
var query=从db.SURV\u Question\u Ext\u模型中的r开始
在db.SURV_Question_模型中加入s
关于r.Qext_问题
s、 问题编号
选择新的{r,s};
var viewModel=新的回答问题viewModel();
viewModel.Survey\u ID=调查ID;
string[]resultanswer=新字符串[queryResult.Count()];
foreach(query.ToList()中的var项)
{
string str=项目s.答案\u数据;
XElement qconfig;
qconfig=XElement.Parse(str);
字符串值=item.s.Question\u类型;
int i=0;
开关(值)
{
案例“选择”:
{
XElement选择类型=
(来自qconfig.Elements(“ChoicesType”)中的节点)
选择节点);
viewModel.ChoiceType=ChoiceType.Value;
希莱门特精选酒店=
下面是我从qconfig.Elements(“answer”)中的节点获取答案数据===>>
选择节点);
resultanswer[i++]=ChoicesAns.Value;
viewModel.ResultAnswer=ResultAnswer;
}
打破
案例“多行”:
{
//无所事事
}
打破
添加(新的回答问题viewmodel()
{
ResultAnswer=viewModel.ResultAnswer
});
}
返回视图(viewmodel);
}
}
我的看法是:
if (Model[i].ChoiceType == "SingleChoice")
{
for (int x = 0; x < Model[i].ResultAnswer.Count(); x++)
{
@Html.LabelFor(m => m[i].Answer, Model[i].ResultAnswer[x].ToString(),new{ @class="qlabel2" })
<br/>
}
}
if(模型[i].ChoiceType==“SingleChoice”)
{
对于(int x=0;xm[i]。答案,模型[i]。结果变量[x]。ToString(),新的{@class=“qlabel2”})
}
}
正如您所说的,您正在接收元素数组,而不是像这样尝试分组
string[] strarray = new string[] {"c1","c2","c2"};
var groups = from str in strarray
group str by str into g
select new {
key = g.Key,
count = g.Count()
}
var xmlstr="<root><Answer_Data><Answer>C1</Answer></Answer_Data>
<Answer_Data><Answer>C2</Answer></Answer_Data>
<Answer_Data><Answer>C2</Answer></Answer_Data></root>";
XDocument xmldoc = XDocument.Parse(xmlstr);
var groups = from record in xmldoc.Descendants("Answer_Data")
group record by (string)record.Element("Answer")
into g
select new {
key = g.Key,
count = g.Count()
}
像这样使用linq尝试分组
string[] strarray = new string[] {"c1","c2","c2"};
var groups = from str in strarray
group str by str into g
select new {
key = g.Key,
count = g.Count()
}
var xmlstr="<root><Answer_Data><Answer>C1</Answer></Answer_Data>
<Answer_Data><Answer>C2</Answer></Answer_Data>
<Answer_Data><Answer>C2</Answer></Answer_Data></root>";
XDocument xmldoc = XDocument.Parse(xmlstr);
var groups = from record in xmldoc.Descendants("Answer_Data")
group record by (string)record.Element("Answer")
into g
select new {
key = g.Key,
count = g.Count()
}
var xmlstr=“C1
C2
C2”;
XDocument xmldoc=XDocument.Parse(xmlstr);
var groups=来自xmldoc.subjects(“应答数据”)中的记录
按(字符串)record.Element(“应答”)对记录进行分组
进入g
选择新的{
键=g键,
count=g.count()
}
@Edward.K-您是否正在以xml格式获取数据hi@pranay rana,不,我通过查询从数据库获取数据。列类型为xml格式。当我插入数据时,我也将其转换为xml格式。我已经更新了我的问题,以便将数据可视化。对于“您的XML字符串”,它是示例“C1”?
XmlDocument
!=<代码>XDocument。这不会编译。您需要XDocument.Parse
@Edward.K-检查答案可能有助于您尝试使用以下代码var result=(从viewModel.ResultAnswer中的项逐项分组到itemGroup select String.Format(“{0}-{1}”、itemGroup.Key、itemGroup.Count());回答