Как помещение if, когда я произвожу xml в c#

Я не знаю, если хорошо формулировался мой вопрос, но даю пример.

Я использую C#, чтобы производить xml на основании базы данных, все это уже я считаю это готовым, он это наполняет и у меня нет никакой ошибки. Мой вопрос - следующий, и для того, чтобы поняли лучше, я буду помещать часть кода, который производит мой xml.

new XElement("documentosadjuntos",
 from docadjunto in DocumentosAdjuntos.GetDocumentosAdjuntos(NumeroDocumento, CodigoDocumento)
 select new XElement("documentoadjunto",
       new XElement("tipo_codigo", docadjunto.iTipoCodigo),
       new XElement("numero_documento", docadjunto.iNumeroDocumento),
       new XElement("fecha_documento", docadjunto.iFechaDocumento),
       new XElement("emisor", docadjunto.iEmisor),
       new XElement("aduana_origen_codigo", docadjunto.iAduanaOrigenCodigo),
       new XElement("rut_numero", docadjunto.iRutNumero),
       new XElement("rut_dv", docadjunto.iRutDV)

)//конец документы присоединил

Практический пример: клиент может наполнять эти поля посредством формуляра и есть разы, в которых, например, он не наполняет того, что является эмитентом. Есть какой-то способ помещать if? чтобы видеть, включается ли эта часть кода?

new XElement("emisor", docadjunto.iEmisor),

Потому что, если человек не наполняет поле, он просто будет появляться как пустота и моя идея состоит в том, чтобы он не появился, я поместил этот код, но визуальный он говорит мне, что он не соответствует:

new XElement("documentosadjuntos",
from docadjunto in DocumentosAdjuntos.GetDocumentosAdjuntos(NumeroDocumento, CodigoDocumento)
select new XElement("documentoadjunto",
        new XElement("tipo_codigo", docadjunto.iTipoCodigo),
        new XElement("numero_documento", docadjunto.iNumeroDocumento),
        new XElement("fecha_documento", docadjunto.iFechaDocumento),
        if (docadjunto.iEmisor != "")
             {
             new XElement("emisor", docadjunto.iEmisor),
             } 
        new XElement("aduana_origen_codigo", docadjunto.iAduanaOrigenCodigo),
        new XElement("rut_numero", docadjunto.iRutNumero),
        new XElement("rut_dv", docadjunto.iRutDV))//fin documentos adjunto
     ),//fin documentosadjuntos

Я думаю, что мое решение может быть в from, делать другой тип консультации?.

Большое спасибо

4
задан 18.03.2019, 13:08
1 ответ

EstГЎs, пробуя вводить блок, где одинокий принимаются выражения, if - блок, но sГ - ты можешь делать это с условный оператор ? (tambiГ©n они это называют тройной оператор). Этот оператор tambiГ©n оценивает одну condiciГіn, но является одной expresiГіn и возвращает стоимость. В этом случае строитель XElement допускает, чтобы они переместили его стоимость null, и что он делает, состоит в том, чтобы игнорировать это просто:

new XElement("documentosadjuntos",
    from docadjunto in DocumentosAdjuntos.GetDocumentosAdjuntos(NumeroDocumento, CodigoDocumento)
    select new XElement("documentoadjunto",
        // ...
        new XElement("fecha_documento", docadjunto.iFechaDocumento),

        string.IsNullOrEmpty(docadjunto.iEmisor) ? null : docadjunto.iEmisor,

        new XElement("aduana_origen_codigo", docadjunto.iAduanaOrigenCodigo),
        // ...
     )
1
ответ дан 02.12.2019, 05:34
  • 1
    если я знаю тройной оператор, я это использую кормлю досыта в php, но не tení в идею о có mo podí чтобы занимать для этого случая с c#. Большое спасибо – Sebastián Miranda 18.03.2019, 20:57

Теги

Похожие вопросы