C# 在MVC视图中按相似节点数显示XML节点值?

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

是否仍然可以将xml节点值按相似的顺序分组为数字?我试着输出下面的值,但是我不能得到我想要的值。请在这方面指导我。谢谢

我的答案是数据库中的数据样本:(提取后将得到C1和C2)

能够在MVC中查看:

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());回答