2010-12-31 3 views
1

私は銀色のウィンドウ電話7アプリケーションを開発しています。私は銀色の新人です。私はLINQ to XMLも新しくなっています。私のアプリケーションでは、ユーザーは、&の日付を選択して、トランザクションの詳細をアプリケーションに送信します。詳細はXMLファイルに保存されます。その後AppObj.dateの値は、XMLファイルに保存されますLINQ to XMLを使用してdatetime値を問い合せる方法は?

private void DatePicker_ValueChanged(object sender, DateTimeValueChangedEventArgs e) 
     { 
      AppObj = Application.Current as App; 
      AppObj.date = (DateTime)EntryDate.Value;   

     } 

を次のように私は、日付選択のための私のアプリケーションでカスタム日付コントロールを使用しています。ときには、DateTime.Nowを使用してXMLファイルに日付を格納します。今は、LINQ to XMLをクエリして、提出されたトランザクションの詳細のレポートを生成したいと考えています。私は今日の日付、現在の週&当月のレポートを生成したいと思います。今日の日付レポートでは、私は次のコードを使用しています

public void GetTransactionObjects(String strXMLFile, DateTime VDateTime) 
     {    
      XDocument doc = null; 
      XMLFileManager XMLDocObj = new XMLFileManager(); 
      doc = XMLDocObj.LoadXMLFile(strXMLFile); 
      var vTransaction = from s in doc.Descendants("Transaction") 
           .Where(x => x.Element("Current_Date").Value == VDateTime.ToShortDateString()) 
           select new Transaction(s); 
      this.Clear(); 
      AddRange(vTransaction);   

     } 

トランザクションクラスには次のコンストラクタが含まれています。 XMLファイルで

public Transaction(XElement xElement) 
     { 
      Transaction_ID = Convert.ToInt32(xElement.Element("Transaction_ID").Value.ToString()); 
      TransactionType_ID = Convert.ToInt32(xElement.Element("TransactionType_ID").Value.ToString()); 
      Alphabet_ID = Convert.ToInt32(xElement.Element("Alphabet_ID").Value.ToString()); 
      ID = Convert.ToInt32(xElement.Element("ID").Value.ToString()); 
      SubCategory_ID = Convert.ToInt32(xElement.Element("SubCategory_ID").Value.ToString()); 
      Item_ID = Convert.ToInt32(xElement.Element("Item_ID").Value.ToString()); 
      Currency_ID = Convert.ToInt32(xElement.Element("Currency_ID").Value.ToString()); 
      InputTypeMethod_ID = Convert.ToInt32(xElement.Element("InputTypeMethod_ID").Value.ToString());   
      Principle = Convert.ToInt32(xElement.Element("InputTypeMethod_ID").Value.ToString()); 
      Interest = Convert.ToInt32(xElement.Element("Interest").Value.ToString()); 
      ROI = Convert.ToInt32(xElement.Element("InputTypeMethod_ID").Value.ToString()); 
      Amount = Convert.ToInt32(xElement.Element("InputTypeMethod_ID").Value.ToString()); 
      Current_Date = Convert.ToDateTime(xElement.Element("Current_Date").Value.ToString()); 
     } 

値は日付&時間のために保存されます。ノード

<Current_Date>2010-12-31T18:08:23.433+05:30</Current_Date> 

日付形式で

<Transactions> 
    <Transaction> 
    <Transaction_ID>0</Transaction_ID> 
    <TransactionType_ID>0</TransactionType_ID> 
    <Alphabet_ID>3</Alphabet_ID> 
    <ID>0</ID> 
    <SubCategory_ID>0</SubCategory_ID> 
    <Item_ID>0</Item_ID> 
    <Currency_ID>3</Currency_ID> 
    <InputTypeMethod_ID>0</InputTypeMethod_ID> 
    <Principle>0</Principle> 
    <Interest>0</Interest> 
    <ROI>0</ROI> 
    <Amount>5000</Amount> 
    <Current_Date>2010-12-31T18:08:23.433+05:30</Current_Date> 
    </Transaction> 
</Transactions> 

ルックをYYYY-MM-DDされ、以下のように値が格納されます。

今日、今日の日付の提出された取引詳細をすべて取得するには、どのようにして次のクエリを書くべきですか?

var vTransaction = from s in doc.Descendants("Transaction") 
            .Where(x => x.Element("Current_Date").Value == VDateTime.ToShortDateString()) 
            select new Transaction(s); 

は同様にどのように私は、現在の週&現在の月のすべてのトランザクションの詳細を取得するクエリを記述する必要がありますか?上記の問題を解決するためのコードやリンクを教えてください。私が何か悪いことをしているなら、私を案内してください。

答えて

4

Convert.ToDateTimeまたはToShortDateStringなどをLINQ to XMLと併用しないでください。すでにXAttributeXElementに存在するコンバージョンを使用します。たとえば、次のように

DateTime today = DateTime.Today; 
var query = doc.Descendants("Transaction") 
       .Where(x => ((DateTime) x.Element("Current_Date")).Date == today) 
       .Select(x => new Transaction(s)); 

(あなたもあなたのTransactionコンストラクタで変換演算子を使用する必要があります。)

関連する問題