从XELEMENT中选择不同的值 [英] SELECT DISTINCT VALUE FROM XELEMENT

查看:62
本文介绍了从XELEMENT中选择不同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我有以下xml结构

< COMP_BRN_LIST>
  < row>
    < COMP_CODE> 001</COMP_CODE>
    < COMP_NAME> ABC LIMITED.</COMP_NAME>
    < BRN_CODE> 002</BRN_CODE>
    < BRN_NAME> AHMEDABAD</BRN_NAME>
  </row>
  < row>
    < COMP_CODE> 001</COMP_CODE>
    < COMP_NAME> ABC LIMITED.</COMP_NAME>
    < BRN_CODE> 003</BRN_CODE>
    < BRN_NAME> DELHI</BRN_NAME>
  </row>
  < row>
    < COMP_CODE> 001</COMP_CODE>
    < COMP_NAME> ABC LIMITED.</COMP_NAME>
    < BRN_CODE> 004</BRN_CODE>
    < BRN_NAME> CHENNAI</BRN_NAME>
  </row>
</COMP_BRN_LIST>

所以在此我为每个分支都有公司代码和公司名称.
我写了一个查询

var vComp =(来自xeComp_Mst.Descendants("row")中的c)
          &bb;  ;           选择新的 KeyValue ((string)c.Element("COMP_CODE"),(string) c.Element("COMP_NAME"))).Distinct();

但这返回公司代码和名称的3倍,但我希望仅给出单个值
即001 abc有限公司.

KeyValue 的结构
    {
      公共字符串sKey {get;放; }
      公用字符串sValue {get;放; }

       公共KeyValue(字符串键,字符串值)
       {
           sKey = key;
          sValue = value;
       }
    }

有人可以帮我解决问题吗?
提前解决问题

Hi All,

I have the following xml structure

<COMP_BRN_LIST>
  <row>
    <COMP_CODE>001</COMP_CODE>
    <COMP_NAME>ABC LIMITED.</COMP_NAME>
    <BRN_CODE>002</BRN_CODE>
    <BRN_NAME>AHMEDABAD</BRN_NAME>
  </row>
  <row>
    <COMP_CODE>001</COMP_CODE>
    <COMP_NAME>ABC LIMITED.</COMP_NAME>
    <BRN_CODE>003</BRN_CODE>
    <BRN_NAME>DELHI</BRN_NAME>
  </row>
  <row>
    <COMP_CODE>001</COMP_CODE>
    <COMP_NAME>ABC LIMITED.</COMP_NAME>
    <BRN_CODE>004</BRN_CODE>
    <BRN_NAME>CHENNAI</BRN_NAME>
  </row>
</COMP_BRN_LIST>

So in this i have a company code and a company name for each branch.
I have written a query

var vComp = (from c in xeComp_Mst.Descendants("row")
                         select new KeyValue ((string)c.Element("COMP_CODE"), (string)c.Element("COMP_NAME"))).Distinct();

but this returns 3 times the company code and name but i want that to give only sigle value
i.e., 001 abc limited. the structure for the keyvalue class used

class KeyValue
    {
        public string sKey { get; set; }
        public string sValue { get; set; }

        public KeyValue(string key, string value)
        {
            sKey = key;
            sValue = value;
        }
    }

can anyone help me to solve the issue
Thx in advance

推荐答案

出现问题了,您想要哪个?每个人都是不同的.你要第一个吗?还是特定的?

//第一个
The question arises, which one do you want? Each one is different. Do you want the first one? Or a specific one?

//First one
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            XElement element = 
                XElement.Parse(@"<COMP_BRN_LIST>
                                  <row>
                                    <COMP_CODE>001</COMP_CODE>
                                    <COMP_NAME>ABC LIMITED.</COMP_NAME>
                                    <BRN_CODE>002</BRN_CODE>
                                    <BRN_NAME>AHMEDABAD</BRN_NAME>
                                  </row>
                                  <row>
                                    <COMP_CODE>001</COMP_CODE>
                                    <COMP_NAME>ABC LIMITED.</COMP_NAME>
                                    <BRN_CODE>003</BRN_CODE>
                                    <BRN_NAME>DELHI</BRN_NAME>
                                  </row>
                                  <row>
                                    <COMP_CODE>001</COMP_CODE>
                                    <COMP_NAME>ABC LIMITED.</COMP_NAME>
                                    <BRN_CODE>004</BRN_CODE>
                                    <BRN_NAME>CHENNAI</BRN_NAME>
                                  </row>
                                </COMP_BRN_LIST>");
            XElement firstOne = element.Elements("row").First();            
        }        
        
    }
}



//得到一个特定的人

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            XElement element = 
                XElement.Parse(@"<COMP_BRN_LIST>
                                  <row>
                                    <COMP_CODE>001</COMP_CODE>
                                    <COMP_NAME>ABC LIMITED.</COMP_NAME>
                                    <BRN_CODE>002</BRN_CODE>
                                    <BRN_NAME>AHMEDABAD</BRN_NAME>
                                  </row>
                                  <row>
                                    <COMP_CODE>001</COMP_CODE>
                                    <COMP_NAME>ABC LIMITED.</COMP_NAME>
                                    <BRN_CODE>003</BRN_CODE>
                                    <BRN_NAME>DELHI</BRN_NAME>
                                  </row>
                                  <row>
                                    <COMP_CODE>001</COMP_CODE>
                                    <COMP_NAME>ABC LIMITED.</COMP_NAME>
                                    <BRN_CODE>004</BRN_CODE>
                                    <BRN_NAME>CHENNAI</BRN_NAME>
                                  </row>
                                </COMP_BRN_LIST>");
            XElement specificOne = element.Elements("row")
                .Where(i => i.Element("BRN_CODE").Value == "003")
                .First();
        }        
        
    }
}






这篇关于从XELEMENT中选择不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆