我目前在PHP上有我的应用程序/项目设置,我试图让它在c#中工作,所以我可以围绕它构建一个应用程序。
我遇到了一些我正在寻求帮助的代码部分。
以上是来自某个系统的XML数据,该系统包含2个typeids(与其他XML相同),同样一次约有100个项目。
我现在正在使用此代码:
XDocument doc = XDocument.Load("http://api.eve-central.com/api/marketstat?typeid=34&typeid=35&usesystem=30000142");
var id = from stats in doc.Root.Elements("marketstat")
from type in stats.Elements("type")
select new
{
typeID = type.Attribute("id").Value
};
foreach (var itemids in id)
{
kryptonListBox4.Items.Add(itemids.typeID);
};
将ListBox填充为34和456.
我需要的是能够添加其他xml数据,例如min sell和max buy
我可以像这样得到第一分钟的销售:
string minSell = doc.Descendants("sell")
.First()
.Element("min")
.Value;
但是我需要有关于typeID的minsell,并且能够使用数据。
以上是来自特定区域的XML数据,包含2个type_ids(当一次完成大约100个项目时,这将是一个更大的列表)。
我尝试使用上面类似的代码,但我无法让它返回正确的数据。
我需要能够获得每个typeid的总量
在PHP中我使用:
foreach ($xml -> result -> rowset-> row as $row)
{
$id = (string)$row['typeID'];
$volume = $row['volume'];
if (!isset($volumes[$id]))
{
$volumes[$id] = 0;
}
$volumes[$id] = $volumes[$id] + $volume;
}
非常感谢任何帮助!
//编辑:看起来我可以使用
var vRow = from xmlRow in marketstats.Descendants("emd").Descendants("result").Descendants("rowset").Descendants("row")
select xmlRow;
第二个问题,但我似乎无法使多维数组工作
答案 0 :(得分:0)
对于你的第二个问题,如果我的理解是正确的,这将是你的需要。
var strxml = File.ReadAllText(@"D:\item_history2.xml");
var xml = XElement.Parse(strxml);
var typeIDs = (from obj in xml.Descendants("row")
select obj).Select(o => o.Attribute("typeID").Value).Distinct();
Dictionary<string, long> kv = new Dictionary<string, long>();
foreach (var item in typeIDs)
{
var sum = (from obj in xml.Descendants("row")
select obj).Where(o => o.Attribute("typeID").Value == item).Sum(p => long.Parse(p.Attribute("volume").Value));
kv.Add(item, sum);
}
在字典中,您将以这种方式获得每个typeID的卷总和
typeID为关键字,音量总和为字典kv。
中的值对于你的第一个问题,
结帐,
var minsell = (from obj in xml.Descendants("type")
select new
{
typeid = obj.Attribute("id").Value,
minsell = obj.Descendants("sell").Descendants("min").FirstOrDefault().Value
}
).ToArray();
这将为您提供与typeid相关的minsell值。 我猜这是你期望的吗? 如果有错,请评论。