C#-Ms访问查询:通过查询连接行

时间:2016-06-14 14:06:08

标签: c# ms-access access-vba ms-access-2010

我需要连接多个行,这个需求已经在这个帖子中讨论和回答Ms Access Query: Concatenating Rows through a query

在上面的线程中,指定的需求只能通过VBA函数实现。但我想通过C#函数实现它。是否有可能通过ms访问查询连接多个行,并且该查询应该从C#执行。

我想通过MS Access查询实现这个完整的功能,就像SQL查询的XML PATH一样。

1 个答案:

答案 0 :(得分:0)

您可以使用OleDbConnection查询ms db:

        var con = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;");

        string stbQuery = "SELECT * FROM [Table]";
        OleDbDataAdapter adp = new OleDbDataAdapter(stbQuery, con);
        DataSet dsXLS = new DataSet();
        adp.Fill(dsXLS);

        var groups = dsXLS.Tables[0].Rows.OfType<DataRow>().GroupBy(r => r.ItemArray[0]);
        System.Data.DataTable t = new System.Data.DataTable();
        t.Columns.Add("Key");
        t.Columns.Add("Value");

        foreach (var grp in groups)
        {
            t.Rows.Add(grp.Key, grp.ToList().Select(r => r.ItemArray[1]).Aggregate((a, b) => a + "," + b));
        }

        Console.ReadLine();

msdn教程:https://msdn.microsoft.com/en-us/library/aa288452(v=vs.71).aspx

祝你有美好的一天!