Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在两个日期之间搜索,并使用xml文件中的日期填充datagrid_C#_Xml_Datagridview - Fatal编程技术网

C# 在两个日期之间搜索,并使用xml文件中的日期填充datagrid

C# 在两个日期之间搜索,并使用xml文件中的日期填充datagrid,c#,xml,datagridview,C#,Xml,Datagridview,所以我有点卡住了,我想创建一个表单,允许用户选择一个日期,然后选择第二个日期,系统将用两个日期之间的所有事件日期填充DataGridView。我看过在线教程,但它们都使用sql而不是xml 完美的场景应该是用户选择date1,然后选择date2,系统从xml检索date1到date2之间的日期,并填充DataGridView上的信息 请您也给出一个代码示例。首先,您需要得到date1和date2之间的结果 其次,需要根据结果创建一个动态数据表 最后,您可以在datagirdview中显示相应的数

所以我有点卡住了,我想创建一个表单,允许用户选择一个日期,然后选择第二个日期,系统将用两个日期之间的所有事件日期填充DataGridView。我看过在线教程,但它们都使用sql而不是xml

完美的场景应该是用户选择date1,然后选择date2,系统从xml检索date1到date2之间的日期,并填充DataGridView上的信息


请您也给出一个代码示例。

首先,您需要得到date1和date2之间的结果

其次,需要根据结果创建一个动态数据表

最后,您可以在datagirdview中显示相应的数据

下面是一个代码示例

  private void button1_Click(object sender, EventArgs e)
    {
        DateTime formatter = dateTimePicker1.Value;
        DateTime latter = dateTimePicker2.Value;
        XDocument doc = XDocument.Load("D:\\t.xml");
        var result = (from x in doc.Descendants("Student")
                     where Convert.ToDateTime(x.Element("Date").Value) <= latter && Convert.ToDateTime(x.Element("Date").Value) >= formatter
                     select x).ToList();
        List<string> column = new List<string>();
        foreach (var item in result.Elements())
        {
            column.Add(item.Name.ToString());
        }
        column=column.Distinct().ToList();
        DataTable table = new DataTable();
        foreach (var item in column)
        {
            table.Columns.Add(item);
        }
        foreach (var item in result)
        {
            table.Rows.Add(item.Element("Name").Value, item.Element("Date").Value, item.Element("Age").Value);
        }
        dataGridView1.DataSource = table;



    }
private void按钮1\u单击(对象发送者,事件参数e)
{
DateTime格式化程序=dateTimePicker1.Value;
DateTime Later=dateTimePicker2.Value;
XDocument doc=XDocument.Load(“D:\\t.xml”);
变量结果=(从文件子体(“学生”)中的x开始)
其中Convert.ToDateTime(x.Element(“Date”).Value)=格式化程序
选择x).ToList();
列表列=新列表();
foreach(result.Elements()中的变量项)
{
column.Add(item.Name.ToString());
}
column=column.Distinct().ToList();
DataTable=新的DataTable();
foreach(列中的var项)
{
表.列.添加(项目);
}
foreach(结果中的var项目)
{
表.Rows.Add(item.Element(“Name”).Value、item.Element(“Date”).Value、item.Element(“Age”).Value);
}
dataGridView1.DataSource=表;
}
Xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<School>
  <Student>
    <Name>test1</Name>
    <Date>2019-01-02</Date>
    <Age>21</Age>
  </Student>
  <Student>
    <Name>test2</Name>
    <Date>2019-03-01</Date>
    <Age>22</Age>
  </Student>
  <Student>
    <Name>test3</Name>
     <Date>2019-07-01</Date>
      <Age>22</Age>
  </Student>
  <Student>
    <Name>test4</Name>
     <Date>2019-10-05</Date>
     <Age>23</Age>
  </Student>
  <Student>
     <Name>test5</Name>
     <Date>2019-11-01</Date>
     <Age>24</Age>
  </Student>
</School>

测试1
2019-01-02

一个新的xml示例,有几个重复的节点。有没有可能只是一个示例?有太多不同样式的xml文件,无法随机给出一个与您的要求无关的示例。刚刚发布了我的xml文件我已经提供了我编写的xml,如果您想使用您的xml,你可以参考我写的代码。什么是XDocument?你可以参考。