Интервалы дат Linq to XML - PullRequest
       6

Интервалы дат Linq to XML

0 голосов
/ 22 апреля 2010

Я использую большой XML-файл в следующем формате:

<Sales>
  <Sale>
    <Date>04/20/2010</Date>
    <Time>18:17:29</Time>
    <Id>P00000001</Id>
    <Name>Prod Name</Name>
    <Description>Prod Desc</Description>
    <Category>Prod Category</Category>
    <Subcategory>Prod Subcategory</Subcategory>
    <Size>Prod Size</Size>
    <Price>25</Price>
    <Image>image path</Image>
  </Sale>
<Sales>

Моя цель - отобразить для суммирования цены и подсчета проданных товаров за определенный период времени:

    XDocument xmlDoc = XDocument.Load("Data.xml");

        DateTime date = new DateTime();
        var queryWeek = from sale in xmlDoc.Descendants("Sale")
                        where ((sale.Element("Date")>= date.Date.AddDays(-7)) && ((sale.Element("Date")<= date.Date())))
                        select sale.Element("Price");

       Console.WriteLine("",queryWeek);

Отладчик жалуется: Ошибка 1 Оператор '> =' нельзя применить к операндам типа

'System.Xml.Linq.XElement' and 'System.DateTime'

Error 2 Non-invocable member 'System.DateTime.Date' cannot be used like a method. 

помогите пожалуйста Девин

Ответы [ 2 ]

1 голос
/ 22 апреля 2010

Вы пытаетесь сравнить DateTime и XElement. Вам нужно изменить XElement на DateTime для сравнения: DateTime.Parse(sale.Element("Date").Value) >= date.Date.AddDays(-7).

0 голосов
/ 30 ноября 2010

Вы можете явно преобразовать XElement в DateTime, используя эту технику (в .NET 3.5 и 4.0):

http://msdn.microsoft.com/en-us/library/bb343203.aspx

XElement root = new XElement("Root", new DateTime(2006, 10, 6, 12, 30, 0));
// Cast from a strictly formatted XML element.
DateTime dt = (DateTime)root;
...