首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求linq语句解决方法

2012-02-09 
求linq语句我有一个字符串,字符串如下:C# codestring str Infostate待命/stateWId000028532/W

求linq语句
我有一个字符串,字符串如下:

C# code
string str = "<Info><state>待命</state><WId>000028532</WId><BillState>装货中</BillState><Driver>陈靖彩</Driver><items><item><Consignor>利源煤灰</Consignor><Consignee>阿海电站</Consignee>" +                    "<LoadLocation>利源煤灰</LoadLocation><UnloadLocation>水电七局</UnloadLocation><GoodName>煤灰</GoodName><GoodsBreed>II 级灰</GoodsBreed><GoodPack>散装</GoodPack><Send>0.0000</Send>" +                    "<Recive>0.0000</Recive></item></items><items><item><Consignor>利源煤灰1</Consignor><Consignee>阿海电站1</Consignee><LoadLocation>利源煤灰1</LoadLocation><UnloadLocation>水电七局1</UnloadLocation>" +                    "<GoodName>煤灰1</GoodName><GoodsBreed>II 级灰1</GoodsBreed><GoodPack>散装1</GoodPack><Send>0.0000</Send><Recive>0.0000</Recive></item></items><items><item><Consignor>利源煤灰2</Consignor>" +                    "<Consignee>阿海电站2</Consignee><LoadLocation>利源煤灰2</LoadLocation><UnloadLocation>水电七局2</UnloadLocation><GoodName>煤灰2</GoodName><GoodsBreed>II 级灰2</GoodsBreed><GoodPack>散装2</GoodPack>" +                    "<Send>0.0000</Send><Recive>0.0000</Recive></item></items></Info>";


字符串的XML格式如下:
XML code
<Info>  <state>待命</state>  <WId>000028532</WId>  <BillState>装货中</BillState>  <Driver>陈靖彩</Driver>  <items>    <item>      <Consignor>利源煤灰</Consignor>      <Consignee>阿海电站</Consignee>      <LoadLocation>利源煤灰</LoadLocation>      <UnloadLocation>水电七局</UnloadLocation>      <GoodName>煤灰</GoodName>      <GoodsBreed>II 级灰</GoodsBreed>      <GoodPack>散装</GoodPack>      <Send>0.0000</Send>      <Recive>0.0000</Recive>    </item>  </items>  <items>    <item>      <Consignor>利源煤灰1</Consignor>      <Consignee>阿海电站1</Consignee>      <LoadLocation>利源煤灰1</LoadLocation>      <UnloadLocation>水电七局1</UnloadLocation>      <GoodName>煤灰1</GoodName>      <GoodsBreed>II 级灰1</GoodsBreed>      <GoodPack>散装1</GoodPack>      <Send>0.0000</Send>      <Recive>0.0000</Recive>    </item>  </items>  <items>    <item>      <Consignor>利源煤灰2</Consignor>      <Consignee>阿海电站2</Consignee>      <LoadLocation>利源煤灰2</LoadLocation>      <UnloadLocation>水电七局2</UnloadLocation>      <GoodName>煤灰2</GoodName>      <GoodsBreed>II 级灰2</GoodsBreed>      <GoodPack>散装2</GoodPack>      <Send>0.0000</Send>      <Recive>0.0000</Recive>    </item>  </items></Info>


字符串解析的结果如下
state WId BillState Driver Consignor Consignee LoadLocation UnloadLocation GoodName  
待命 000028532 装货中 陈靖彩 利源煤灰 阿海电站 利源煤灰 水电七局 煤灰
待命 000028532 装货中 陈靖彩 利源煤灰1 阿海电站1 利源煤灰1 水电七局1 煤灰1
待命 000028532 装货中 陈靖彩 利源煤灰2 阿海电站2 利源煤灰2 水电七局2 煤灰2

求linq语句



[解决办法]
来了。。。。


C# code
void Main(){    string str = "<Info><state>待命</state><WId>000028532</WId><BillState>装货中</BillState><Driver>陈靖彩</Driver><items><item><Consignor>利源煤灰</Consignor><Consignee>阿海电站</Consignee>" +                    "<LoadLocation>利源煤灰</LoadLocation><UnloadLocation>水电七局</UnloadLocation><GoodName>煤灰</GoodName><GoodsBreed>II 级灰</GoodsBreed><GoodPack>散装</GoodPack><Send>0.0000</Send>" +                    "<Recive>0.0000</Recive></item></items><items><item><Consignor>利源煤灰1</Consignor><Consignee>阿海电站1</Consignee><LoadLocation>利源煤灰1</LoadLocation><UnloadLocation>水电七局1</UnloadLocation>" +                    "<GoodName>煤灰1</GoodName><GoodsBreed>II 级灰1</GoodsBreed><GoodPack>散装1</GoodPack><Send>0.0000</Send><Recive>0.0000</Recive></item></items><items><item><Consignor>利源煤灰2</Consignor>" +                    "<Consignee>阿海电站2</Consignee><LoadLocation>利源煤灰2</LoadLocation><UnloadLocation>水电七局2</UnloadLocation><GoodName>煤灰2</GoodName><GoodsBreed>II 级灰2</GoodsBreed><GoodPack>散装2</GoodPack>" +                    "<Send>0.0000</Send><Recive>0.0000</Recive></item></items></Info>";  var data=XElement.Parse(str);     var query=from x in data.Descendants("items")               select new            {                state=x.Parent.Element("state").Value,                WId =x.Parent.Element("WId").Value,                BillState =x.Parent.Element("BillState").Value,                Driver=x.Parent.Element("Driver").Value,                Consignor=x.Element("item").Element("Consignor").Value,                Consignee =x.Element("item").Element("Consignee").Value,                LoadLocation =x.Element("item").Element("LoadLocation").Value,                UnloadLocation =x.Element("item").Element("UnloadLocation").Value,                GoodName   =x.Element("item").Element("GoodName").Value            }; query.ToList().ForEach(q=>Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t",q.state,q.WId,q.BillState,q.Driver,q.Consignor,q.Consignee,q.LoadLocation,q.UnloadLocation,q.GoodName)); /* 待命    000028532    装货中    陈靖彩    利源煤灰    阿海电站    利源煤灰    水电七局    煤灰    待命    000028532    装货中    陈靖彩    利源煤灰1    阿海电站1    利源煤灰1    水电七局1    煤灰1    待命    000028532    装货中    陈靖彩    利源煤灰2    阿海电站2    利源煤灰2    水电七局2    煤灰2 */}
[解决办法]
C# code
var xdoc = XDocument.Parse(str);var list = from item in xdoc.Descendants("item")           select new           {               state = item.Ancestors("Info").Descendants("state").First().Value,               WId = item.Ancestors("Info").Descendants("WId").First().Value,               BillState = item.Ancestors("Info").Descendants("BillState").First().Value,               Driver = item.Ancestors("Info").Descendants("Driver").First().Value,               Consignor = item.Descendants("Consignor").First().Value,               Consignee = item.Descendants("Consignee").First().Value,               LoadLocation = item.Descendants("LoadLocation").First().Value,               UnloadLocation = item.Descendants("UnloadLocation").First().Value,               GoodName = item.Descendants("GoodName").First().Value,           };foreach (var row in list)    Console.WriteLine(row); 

热点排行