2

次のように XML ファイルを設定しています。

<products>
<product>
    <tradegood id = "11">Textiles</tradegood>
    <baseprice>3000</baseprice>
    <purchaseDMs>
        <mod type="A">-7</mod>
        <mod type="a">-5</mod>
        <mod type="i">-3</mod>
    </purchaseDMs>
    <resaleDMs>
        <mod type="A">-6</mod>
        <mod type="a">1</mod>
        <mod type="R">3</mod>
    </resaleDMs>
    <quantity>90</quantity>
</product>

そして、次のように LINQ to XML を使用しています。

  XDocument productList = XDocument.Load("products.xml");

  List<Product> products = 
                (from objProduct in productList.Element("products").Elements("product")
                    select new Product
                    {
                         Id = int.Parse(objProduct.Element("tradegood").Attribute("id").Value),
                         ProductName = objProduct.Element("tradegood").Value,
                         BasePrice = double.Parse(objProduct.Element("baseprice").Value),
                         MaxQuantity = int.Parse(objProduct.Element("quantity").Value),
                         PurchaseDMs = (from _mods in objProduct.Element("purchaseDMs").Elements("mod")
                              select new 
                                {
                                key = _mods.Attribute("type").Value,
                                value = _mods.Value
                                }),
                         ResaleDMs = (from _mods in objProduct.Element("resaleDMs").Elements("mod")
                              select new 
                                {
                                key = _mods.Attribute("type").Value,
                                value = _mods.Value
                                })
                      }).ToList;

製品クラスは次のとおりです。

public class Product
{
    private string p_ProductName;
    private double p_BasePrice;
    private int p_MaxQuantity;
    private double p_ActualValue;
    private int p_id;
    private int p_Quantity;

    public string ProductName
    {
        get { return p_ProductName; }
        set { p_ProductName = value; }
    }
    public double BasePrice
    {
        get { return p_BasePrice; }
        set { p_BasePrice = value; }
    }
    public int MaxQuantity
    {
        get { return p_MaxQuantity; }
        set { p_MaxQuantity = value; }
    }
    public int QuantityAvailable 
    {
        get { return p_Quantity; }
        set { p_Quantity = value; }
    }
    public double ActualValue
    {
        get { return p_ActualValue; }
        set { p_ActualValue = value; }
    }
    public int Id
    {
        get { return p_id; }
        set { p_id = value; }
    }

    public Dictionary<string, int> ResaleDMs;
    public Dictionary<string, int> PurchaseDMs;
}

作業を開始する方法を理解できない唯一の部分は、ResaleDM と PurchaseDM です。

ステートメントは両方とも、select「型 'System.Collections.Generic.IEnumerable' を 'System.Collections.Generic.Dictionary' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)」を示しています。

誰でもこれを理解するのを手伝ってもらえますか? これらのフィールドを初期化するにはどうすればよいですか?

4

2 に答える 2