C# c datagridview过滤数据到livechart

C# c datagridview过滤数据到livechart,c#,visual-studio,winforms,c#-4.0,c#-3.0,C#,Visual Studio,Winforms,C# 4.0,C# 3.0,我想通过过滤日期将数据从SQLite数据库传输到饼图。我遇到问题的地方是foreach循环。如何将信息从数据库传输到饼图?很抱歉我的英语不好…您可以尝试以下代码将信息从datagridview转换到饼图 private void btn_gider_bilgi_getir_Click(object sender, EventArgs e) { string veritabaniyolu = "Data source=veritabani.db";

我想通过过滤日期将数据从SQLite数据库传输到饼图。我遇到问题的地方是foreach循环。如何将信息从数据库传输到饼图?很抱歉我的英语不好…

您可以尝试以下代码将信息从datagridview转换到饼图

private void btn_gider_bilgi_getir_Click(object sender, EventArgs e)
    {
        string veritabaniyolu = "Data source=veritabani.db";
        string ay = cbox_g_gun.Text;
        string yil = cbox_g_yil.Text;

        SQLiteConnection baglanti = new SQLiteConnection(veritabaniyolu);
        baglanti.Open();
        string sql_tarih_sorgula = $"SELECT * FROM Gelirler WHERE GelirTarihi BETWEEN '{yil}-{ay}-01' AND '{yil}-{ay}-31'";
        SQLiteDataAdapter da = new SQLiteDataAdapter(sql_tarih_sorgula, baglanti);
        DataTable dt = new DataTable();
        da.Fill(dt);
        bunifuDataGridView1.DataSource = dt;     
        baglanti.Close();

        Func<ChartPoint, string> fu = x => string.Format("{0},{1:P}", x.Y, x.Participation);
        SeriesCollection series = new SeriesCollection();

        foreach (var item in bunifuDataGridView1)
        {
            //PieSeries pie = new PieSeries();
            //pie.Title = item;
            //pie.Values = new ChartValues<int> { (int)item };
            //pie.DataLabels = true;
            //pie.LabelPoint = fu;
            //series.Add(pie);
            //pieChart1.Series = series;
        }
    }
结果:


我需要一个帮助ppppppp请,这是工作,但有些问题在这里。。。为什么都是25%@BrktrL。基于您最初的问题,我认为您只想筛选日期时间。但现在我明白你的意思了。我在另一个问题中作了回答。您可以接受该线程或删除该线程。
  private void Form1_Load(object sender, EventArgs e)
    {
        dataGridView1.AllowUserToAddRows = false;


    }

    private void button1_Click(object sender, EventArgs e)
    {
        dataGridView1.DataSource = null;
        SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite");
        m_dbConnection.Open();
        string sql = string.Format("Select * From example where birthdate between '{0}-{1}-01' AND '{0}-{1}-31'",textBox1.Text,textBox2.Text);
        SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, m_dbConnection);
        DataTable dt = new DataTable();
        adapter.Fill(dt);
        dataGridView1.DataSource = dt;
        m_dbConnection.Close();
        Func<ChartPoint, string> labelPoint = chartPoint => string.Format("{0} ({1:P})", chartPoint.Y, chartPoint.Participation);
        // Define a collection of items to display in the chart 
        SeriesCollection piechartData = new SeriesCollection();
        var collection=dataGridView1.Rows.Cast<DataGridViewRow>().GroupBy(x=> x.Cells[1].Value).Where(g=>g.Count()>0).Select(y => new { Element = y.Key, Counter = y.Count() }).ToList();
        foreach (var item in collection)
        {
            piechartData.Add(new PieSeries { Title =Convert.ToDateTime( item.Element).ToShortDateString(), Values = new ChartValues<double> { item.Counter }, DataLabels = true, LabelPoint = labelPoint });
        }
        // You can add a new item dinamically with the add method of the collection
        // Useful when you define the data dinamically and not statically
        // Define the collection of Values to display in the Pie Chart
        pieChart1.Series = piechartData;
        // Set the legend location to appear in the Right side of the chart
        pieChart1.LegendLocation = LegendLocation.Right;
    }