问题描述
大家好,
我有以下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
推荐答案
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中选择不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!