DateTime.Min Значение, когда строка равна EmptyOr Null в Linq to XML - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь разобрать строку xml, в которой есть даты.Объект, который я пытаюсь заполнить, имеет значение DateTime.Но если строка, которую я извлекаю, имеет пустое значение, я хочу, чтобы это было минимальное значение даты.и я хочу присвоить это переменной?Есть ли простой способ сделать это с помощью LINQ

 IEnumerable<PatientClass> template = (IEnumerable<PatientClass>)(from templates in xDocument.Descendants("dataTemplateSpecification")//elem.XPathSelectElements(string.Format("//templates/template[./elements/element[@name=\"PopulationPatientID\"and @value='{0}' and @enc='{1}']]", "1", 0))
                                               select new PatientClass
                                               {
 PCPAppointmentDateTime = DateTime.Parse(templates.Descendants("element").SingleOrDefault(el => el.Attribute("name").Value == "PCPAppointmentDateTime").Attribute("value").Value),
 });

Объект, который я использую, это ...

 class PatientClass
 { 
   public DateTime? PCPAppointmentDateTime { get; set; }
 }

Есть идеи?

Ответы [ 3 ]

5 голосов
/ 13 марта 2012

Вы должны обернуть Parse в метод.Вернуть DateTime.

DateTime ValueOrMin(string value)
{
     if (string.IsNullOrWhiteSpace(value)) return DateTime.MinValue;
     return DateTime.Parse(value);
}
2 голосов
/ 13 марта 2012
public void DoWhatever(){
     PCPAppointmentDateTime = ParseDate(templates.Descendants("element").SingleOrDefault(el => el.Attribute("name").Value == "PCPAppointmentDateTime").Attribute("value").Value);
}

private DateTime ParseDate(string dateString){
    DateTime date;
    if (DateTime.TryParse(dateString, out date))
         return date;
    return DateTime.MinValue;
}
2 голосов
/ 13 марта 2012

Нет "простого" способа, кроме очевидного подхода, который тоже не сложен:

var dateString = templates.Descendants("element")
      .SingleOrDefault(el => el.Attribute("name").Value == "PCPAppointmentDateTime")
      .Attribute("value").Value;
PCPAppointmentDateTime = dateString == ""
      ? DateTime.MinValue
      : DateTime.Parse(dateString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...