none
Linq query RRS feed

  • Question

  • Bonjour,

    <?xml version="1.0" encoding="utf-8"?>
    <deliveryNotes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1">
    <client number="" />
    <deliveryNote number="" deliveryDate="">
     <order number="0" referenceNumber="">
      <orderLine>
       <invoicedQuantity value="1" />
       <bonusQuantity value="0" />
       <description value="1 STAMEDIS BOX REFRIGERANT GRAND" />
       <pharmaCode value="4794646" />
       <basePrice value="0.00" />
       <totalLineDiscountPercent value="0.00" />
       <baseLinePriceNet value="0.00" />
       <lineLogisticServiceCost value="0.00" />
       <lineValue value="1.58" />
       <invoicedPricePerPiece value="1.58" />
       <publicPricePerPiece value="0.00" />
       <lineInBoxNo value="8" />
       <articleCode value="" />
       <codeVAT value="1" />
       <expiryDate value="2016-01-31" />
      </orderLine>
      <orderLine>
       <invoicedQuantity value="1" />
       <bonusQuantity value="0" />
       <description value="500 GRBIMBOSAN ALOSAN DEJEUNER INSTBTL" />
       <pharmaCode value="1556722" />
       <basePrice value="6.02" />
       <totalLineDiscountPercent value="0.00" />
       <baseLinePriceNet value="0.00" />
       <lineLogisticServiceCost value="0.28" />
       <lineValue value="5.65" />
       <invoicedPricePerPiece value="5.65" />
       <publicPricePerPiece value="7.70" />
       <lineInBoxNo value="3" />
       <articleCode value="" />
       <codeVAT value="2" />
       <expiryDate value="2016-11-30" />
      </orderLine>
      <orderLine>
       <invoicedQuantity value="2" />
       <bonusQuantity value="0" />
       <description value="6 STGYNOFLOR VAG                KKCPR" />
       <pharmaCode value="1286961" />
       <basePrice value="6.89" />
       <totalLineDiscountPercent value="0.00" />
       <baseLinePriceNet value="0.00" />
       <lineLogisticServiceCost value="0.62" />
       <lineValue value="12.50" />
       <invoicedPricePerPiece value="6.25" />
       <publicPricePerPiece value="15.00" />
       <lineInBoxNo value="7" />
       <articleCode value="" />
       <codeVAT value="2" />
       <expiryDate value="2017-09-30" />
      </orderLine>
      <orderLine>
       <invoicedQuantity value="3" />
       <bonusQuantity value="0" />
       <description value="5X3 MLLEVEMIR FLEXPEN SOL INJ     KKAMP" />
       <pharmaCode value="2756771" />
       <basePrice value="93.54" />
       <totalLineDiscountPercent value="0.00" />
       <baseLinePriceNet value="0.00" />
       <lineLogisticServiceCost value="13.20" />
       <lineValue value="264.87" />
       <invoicedPricePerPiece value="88.29" />
       <publicPricePerPiece value="112.70" />
       <lineInBoxNo value="4" />
       <articleCode value="" />
       <codeVAT value="2" />
       <expiryDate value="2017-07-31" />
      </orderLine>
      <orderLine>
       <invoicedQuantity value="1" />
       <bonusQuantity value="0" />
       <description value="100 GRPRIODERM SHAMP CREME        KKCRE" />
       <pharmaCode value="1993925" />
       <basePrice value="23.73" />
       <totalLineDiscountPercent value="2.73" />
       <baseLinePriceNet value="0.65" />
       <lineLogisticServiceCost value="1.10" />
       <lineValue value="19.37" />
       <invoicedPricePerPiece value="19.37" />
       <publicPricePerPiece value="37.80" />
       <lineInBoxNo value="6" />
       <articleCode value="" />
       <codeVAT value="2" />
       <expiryDate value="2017-12-31" />
      </orderLine>
      <orderLine>
       <invoicedQuantity value="1" />
       <bonusQuantity value="0" />
       <description value="5 MLSPERSAPOLYMYXIN CIV OPHT    KKGTT" />
       <pharmaCode value="1552428" />
       <basePrice value="5.86" />
       <totalLineDiscountPercent value="0.00" />
       <baseLinePriceNet value="0.00" />
       <lineLogisticServiceCost value="0.27" />
       <lineValue value="5.32" />
       <invoicedPricePerPiece value="5.32" />
       <publicPricePerPiece value="14.00" />
       <lineInBoxNo value="5" />
       <articleCode value="" />
       <codeVAT value="2" />
       <expiryDate value="2016-07-31" />
      </orderLine>
      <orderTotal>
       <totalBaseLinePriceNet value="309.29" />
       <totalLineValue value="6" />
      </orderTotal>
     </order>
     <deliveryNoteTotal>
      <totalPrice value="309.29" />
      <totalPriceNet value="309.29" />
      <totalLogisticServiceCost value="15.47" />
      <totalLines value="6" />
      <totalPieces value="9" />
      <totalVolumeL value="0.0" />
      <totalWeightKg value="0.0" />
     </deliveryNoteTotal>
    </deliveryNote>
    </deliveryNotes>

    Je cherche un requête linq avec XML a obtenir la veleur de l'élément expiryDate  lorsque l'élément pharmaCode = '1552428'

    Si je mets

    var result = (from el in root.Descendants(dc + "orderLine")
                                        .Elements("pharmaCode")
                                        where (string)el.Attribute("value") == (string)rd["pharmcod"]
                                        select el);

    je dois ensuite remonter au parent pour trouver la valeur de expiryDate .

    Auriez-vous une solution directe pour moi ?

    D'avance merci.

    Pierre


    Pierre MSN

    mercredi 13 janvier 2016 11:40

Réponses

  • J'ai testé dans LinqPad avec votre fichier d'exemple et ca fonctionne !

    Vous exécutez bien la requête ? query.ToList() ou query.ToArray() ou

    foreach(var elm in query){
      System.Diagnostics.Debug.WriteLine(elm.code);
    }

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    • Marqué comme réponse a__pierre mercredi 13 janvier 2016 17:01
    mercredi 13 janvier 2016 16:31
  • Oui, cette fois ca fonctionne, je n'y comprends rien, j'ai rien changé.

    Merci beaucoup.


    Pierre MSN


    Je crois que ma variable était mal déclarée

    Pierre MSN

    mercredi 13 janvier 2016 21:05

Toutes les réponses

  • Bonjour,

    A mon avis vous n'avez pas la bonne approche. Le but du jeu est d'extraire les nœuds "orderLine" qui correspondent à votre recherche, par exemple :

    var query = from e in xml.Descendants("orderLine")
    			from pc in e.Elements("pharmaCode")
    			where (string)pc.Attribute("value") == "1552428"
    			select e;
    

    Si vous voulez extraire un certains nombres de données plutôt que le nœud :

    var query = from e in xml.Descendants("orderLine")
    			from pc in e.Elements("pharmaCode")
    			where (string)pc.Attribute("value") == "1552428"
    			select new{
    				code = (string)e.Element("pharmaCode").Attribute("value"),
    				description = (string)e.Element("description").Attribute("value"),
    				expDate = (DateTime)e.Element("expiryDate").Attribute("value")
    			};
    

    Cordialement,

     


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    mercredi 13 janvier 2016 13:48
  • Le problème c'est que cette query ne renvoie rien, j'avais déjà essayé mais la réponse est vide

    var query = from e in xml.Descendants("orderLine")
    from pc in e.Elements("pharmaCode")
    where (string)pc.Attribute("value") == "1552428"
    select new{
    code
    = (string)e.Element("pharmaCode").Attribute("value"),
    description
    = (string)e.Element("description").Attribute("value"),
    expDate
    = (DateTime)e.Element("expiryDate").Attribute("value")
    };


    Pierre MSN

    mercredi 13 janvier 2016 16:08
  • J'ai testé dans LinqPad avec votre fichier d'exemple et ca fonctionne !

    Vous exécutez bien la requête ? query.ToList() ou query.ToArray() ou

    foreach(var elm in query){
      System.Diagnostics.Debug.WriteLine(elm.code);
    }

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    • Marqué comme réponse a__pierre mercredi 13 janvier 2016 17:01
    mercredi 13 janvier 2016 16:31
  • Oui, cette fois ca fonctionne, je n'y comprends rien, j'ai rien changé.

    Merci beaucoup.


    Pierre MSN

    mercredi 13 janvier 2016 17:01
  • Oui, cette fois ca fonctionne, je n'y comprends rien, j'ai rien changé.

    Merci beaucoup.


    Pierre MSN


    Je crois que ma variable était mal déclarée

    Pierre MSN

    mercredi 13 janvier 2016 21:05