1

我正在开发一个项目,将旧的 VB6 项目转换为 .NET/C#。我遇到了一种执行多个查询的方法,其中一次使用recordset.FindFirst 方法生成子结果。我不知道如何在不使用 LINQ 的情况下将其转换为 C#(无论如何我都没有经验)。我已经通过 Google 等进行搜索,但找不到不使用 LINQ 的相关示例。谁能提供一个简单的 C# 示例来执行查询,然后在不使用 LINQ 的情况下针对这些结果执行子句?

在我的代码中,我使用 anOldDbConnection和 anOleDbReader从 Access 数据库中查询表。也许这是错误的?

非常感谢您提供的任何示例。

4

1 回答 1

2

一种方法是将初始查询结果加载到 a 中DataTable,然后使用该.Select方法针对初始结果运行辅助查询。例如,对于 Access 中名为 [Users] 的表,包含...

ID  UserName
--  --------
1   Jeff
2   Greg
3   Garth
4   Gord
5   Gary
6   Grant
7   Graham

...以下 C# 代码...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;

namespace oledbTest1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var conn = new OleDbConnection())
            {
                conn.ConnectionString =
                        @"Provider=Microsoft.ACE.OLEDB.12.0;" +
                        @"Data Source=C:\__tmp\testData.accdb;";
                conn.Open();
                using (var cmd = new OleDbCommand())
                {
                    cmd.Connection = conn;
                    cmd.CommandText =
                        "SELECT * FROM Users WHERE ID < 7 ORDER BY UserName";
                    var da = new OleDbDataAdapter(cmd);
                    var dt = new System.Data.DataTable();
                    da.Fill(dt);
                    Console.WriteLine("The initial query from the Access database (WHERE ID < 7) returned:");
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        Console.WriteLine(dr["UserName"]);
                    }
                    System.Data.DataRow[] subsetRows;
                    subsetRows = dt.Select("UserName LIKE 'Gr%'");
                    Console.WriteLine();
                    Console.WriteLine("The equivalent of \".FindFirst UserName LIKE 'Gr%'\" on that subset would be:");
                    Console.WriteLine(subsetRows[0]["UserName"]);
                }
                conn.Close();
            }
        }
    }
}

...产生以下结果:

The initial query from the Access database (WHERE ID < 7) returned:
Garth
Gary
Gord
Grant
Greg
Jeff

The equivalent of ".FindFirst UserName LIKE 'Gr%'" on that subset would be:
Grant
于 2013-10-02T01:06:22.923 回答