gpt4 book ai didi

c# - 如何使用 LINQ to XML 查询日期时间值?

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:23 25 4
gpt4 key购买 nike

我正在 silverlight 中开发 window phone 7 应用程序。我是银光的新手。我也是 LINQ to XML 的新手。在我的应用程序中,用户选择日期并将一些交易详细信息提交到应用程序中。详细信息存储在 XML 文件中。我在我的应用程序中使用自定义日期控件进行日期选择,如下所示

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

}

然后 AppObj.date 的值被存储在 XML 文件中。有时我使用 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);

}

Transaction 类包含以下构造函数。

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());
}

在 XML 文件中,日期和时间的值被存储。该值按如下方式存储

<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>

查看节点

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

日期格式为 yyyy-mm-dd。

现在我应该如何编写以下查询以获取今天日期的所有已提交交易详细信息?

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

同样,我应该如何编写查询以获取当周和当月的所有交易明细?您能否提供我可以解决上述问题的任何代码或链接?如果我做错了什么,请指导我。

最佳答案

不要将 Convert.ToDateTimeToShortDateString 等与 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 构造函数中使用转换运算符。)

关于c# - 如何使用 LINQ to XML 查询日期时间值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com