0

私の以前の投稿からの私自身の質問への拡張

あなたが気づいたら私はletキーワードで私の要素を結合しています

私のXMLにはこれらすべての要素が含まれていない場合があります。

それで、終了した場合にこの要素を結合することは可能ですか?存在しない場合は、そのフィールドにnullまたは空の値を指定します

たとえば、薬局要素がない場合。

その後、これ let Pharmacy = MD.Element(NameSpace + "Pharmacy") は可能であるはずであり、これ

phStoreName = Pharmacy.Element(NameSpace + "StoreName").Value,

phStoreNameにnullまたは空の値を与える必要があります

var MedicationDispensed =
  (from MD in xdoc.Descendants(NameSpace + "MedicationDispensed")
   let DrugCoded = MD.Element(NameSpace + "DrugCoded")
   let Quantity = MD.Element(NameSpace + "Quantity")
   let Pharmacy = MD.Element(NameSpace + "Pharmacy")
   let phIdentification = Pharmacy.Element(NameSpace + "Identification")
   let phAddress = Pharmacy.Element(NameSpace + "Address")
   let phPhoneNumbers = Pharmacy.Element(NameSpace + "PhoneNumbers")
   let phPhone = phPhoneNumbers.Element(NameSpace + "Phone")
   let Prescriber = MD.Element(NameSpace + "Prescriber")
   let prIdentification = Prescriber.Element(NameSpace + "Identification")
   let prName = Prescriber.Element(NameSpace + "Name")
   let prAddress = Prescriber.Element(NameSpace + "Address")
   select new
   {
       DrugDescription = MD.Element(NameSpace + "DrugDescription").Value,
       ProductCode = DrugCoded.Element(NameSpace + "ProductCode").Value,
       ProductCodeQualifier = DrugCoded.Element(NameSpace + "ProductCodeQualifier").Value,
       Qualifier = Quantity.Element(NameSpace + "Qualifier").Value,
       Value = Quantity.Element(NameSpace + "Value").Value,
       CodeListQualifier = Quantity.Element(NameSpace + "CodeListQualifier").Value,
       DaysSupply = MD.Element(NameSpace + "DaysSupply").Value,
       LastFillDate = MD.Element(NameSpace + "LastFillDate").Value,
       phStoreName = Pharmacy.Element(NameSpace + "StoreName").Value,
       phNCPDPID = phIdentification.Element(NameSpace + "NCPDPID").Value,
       phAddress1 = phAddress.Element(NameSpace + "AddressLine1").Value,
       phCity = phAddress.Element(NameSpace + "City").Value,
       phState = phAddress.Element(NameSpace + "State").Value,
       phZipcode = phAddress.Element(NameSpace + "ZipCode").Value,
       phPhoneNumber = phPhone.Element(NameSpace + "Number").Value,
       phQualifier = phPhone.Element(NameSpace + "Qualifier").Value,
       prDEANumber = prIdentification.Element(NameSpace + "DEANumber").Value,
       prLastName = prName.Element(NameSpace + "LastName").Value,
       prFirstName = prName.Element(NameSpace + "FirstName").Value,
       prMiddleName = prName.Element(NameSpace + "MiddleName").Value,
       prAddress1 = prAddress.Element(NameSpace + "AddressLine1").Value,
       prCity = prAddress.Element(NameSpace + "City").Value,
       prState = prAddress.Element(NameSpace + "State").Value,
       prZipCode = prAddress.Element(NameSpace + "ZipCode").Value
   }).ToList();
4

2 に答える 2

0

これを行う代わりに:

Pharmacy.Element(NameSpace + "StoreName").Value

次のような明示的な変換演算子を使用します。

(string)Pharmacy.Element(NameSpace + "StoreName")

要素がnullでない場合は.Valueを返し、要素が存在しない場合は空の文字列を返します。XElementの明示的な変換演算子の詳細については、次を参照してください:http: //msdn.microsoft.com/en-us/library/system.xml.linq.xelement.op_explicit.aspx

于 2012-04-26T04:21:17.297 に答える
0

ついにそれに対処するための解決策を見つけましたこのリンクを参照してください

    What if "let" returns null?

If you declare an object with "let" such as

let myPayment = bill.Element("payment")

select new Payment

  {

     Amount = (decimal) myPayment.Element("Amount")

  }

If myPayment is null, this blows up with a null reference exception.  The alternative would be

  Amount = myPayment != null ? (decimal) myPayment.Element("Amount")

but think how cumbersome that is for a bunch of fields.

What's the solution?
于 2012-05-02T17:24:59.683 に答える