0

我正在尝试用 C# 编写一个应用程序,它将分析两个不同的数据集并尝试找到它们之间的匹配项。我的问题是,对我来说,浏览数据行并从中提取数据的最佳方式是什么?

我需要提取具有多列的整行数据,并分析它们的相似之处。

最好的方法是将行放入字符串并解析它吗?

编辑:这是我用来将数据放入 DataGridView 的代码,它来自 excel 电子表格:

try
                {
                    OleDbConnectionStringBuilder connStringBuilder = new OleDbConnectionStringBuilder();
                    connStringBuilder.DataSource = file;
                    connStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
                    connStringBuilder.Add("Extended Properties", "Excel 8.0;HDR=NO;IMEX1");

                    DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");

                    DbDataAdapter adapter = factory.CreateDataAdapter();

                    DbCommand selectCommand = factory.CreateCommand();
                    selectCommand.CommandText = "SELECT * FROM [All Carpets to Excel$]";

                    DbConnection connection = factory.CreateConnection();
                    connection.ConnectionString = connStringBuilder.ConnectionString;

                    selectCommand.Connection = connection;

                    adapter.SelectCommand = selectCommand;

                    data = new DataSet();

                    adapter.Fill(data);

                    dataGridView1.DataSource = data.Tables[0].DefaultView;



                }
                catch (IOException)
                {

                }

我还没有尝试任何代码来分析和比较,但我首先需要知道访问数据和格式化数据的最佳方式是什么。

谢谢!

4

1 回答 1

1

我喜欢使用 List 对象,并使用 LINQ 来运行比较和运行查询。这是一个获取 DataSet(您的示例中的“数据”属性)并从中获取 DataTable 的示例。然后我遍历行和列并填充一个列表。最后一行只是对新列表使用 LINQ 查询的示例。

DataSet grid = new DataSet();
            DataTable table = grid.Tables[0];

            List<string> tableData = new List<string>();
            foreach (DataRow row in table.Rows)
            {
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    tableData.Add(row[i].ToString());
                }
            }

            tableData.Where(x => x == "TestValue");

如果对此有任何疑问,请告诉我。

于 2012-07-06T15:39:31.487 回答