-4

如何使用 ClientID 从 Ilist 中搜索客户端名称。我无法弄清楚。我创建了一个名为 clientdetails 的简单类,并与 oracle 数据库建立了连接。现在我只想使用 ClientID 搜索列表并显示结果。

谢谢AK。

class ClientDetails
{
    public string ClientID;
    public string ClientName;
    public string CreatedBy;
    public string UpdatedBy;

    public ClientDetails(string ClientID, string ClientName, string CreatedBy, string UpdatedBy)
    {
        this.ClientID = ClientID;
        this.ClientName = ClientName;
        this.CreatedBy = CreatedBy;
        this.UpdatedBy = UpdatedBy;
    }
}
class ConnectionSample
{
    static void Main()
    {
        OracleConnection con = new OracleConnection();

        //using connection string to connect to oracle database
        IList<ClientDetails> myfield = new List<ClientDetails>();
        try
        {

            con.ConnectionString = "xxxxxconnection stringxxxxx";
            con.Open();
            OracleCommand command = con.CreateCommand();
            string abc = "SELECT * FROM CLI_CLIENT_900";
            command.CommandText = abc;
            OracleDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                myfield.Add(new ClientDetails(reader["CLIENT_ID"].ToString(), reader["CLIENT_NAME"].ToString(), reader["CREATED_BY"].ToString(), reader["UPDATED_BY"].ToString()));

            }

        }
        catch (Exception ex)
        {
            Console.WriteLine("Error" + ex, "Error");
        }
        //close and dispose oracleconnection object

        con.Close();
        con.Dispose();

        foreach (ClientDetails c1 in myfield.OrderByDescending(s => s.ClientID))
        {

            Console.Write("\n" + c1.ClientID);
            Console.Write("\t"+c1.ClientName);
            Console.Write("\t\t"+c1.UpdatedBy);
        }
    }
    static void Display(IList<string> myfield)
    {
        foreach (string value in myfield)
        {
            Console.WriteLine("\t"+value);
        }
    }
4

3 回答 3

4

如果您有一个List项目,您可以通过以下方式选择特定项目:

myfield.Where( t => t.ClientId == 1234);

这将返回成员等于 1234的ClientDetails对象集合。ClientId

也就是说,这可能是过滤,除非您有令人信服的理由不这样做,否则您最好在数据库中进行过滤。

于 2013-05-08T22:06:50.223 回答
1

您可以使用First/FirstOrDefault

ClientDetails client = myfield.FirstOrDefault(c => c.clientID == givenID);
if(client != null)
   Console.Write(client.ClientName);
else
   Console.Write("clientID not found");
于 2013-05-08T22:07:30.547 回答
1

如果您在代码中有列表,则可以使用简单的 LINQ 查询来获得所需的结果。

 var results = myList.Where(x => x.ClientId == clientIdImSearchingFor);

 foreach (Client c in results)
    // print client data

你也可以把它做成一个循环,里面有一个 if ;

  foreach (Client c in ClientsList)
  {
       if (c.ClientId == ClientIdImSearchingFor)
           //print client data
  }

此外,如果您想使用 SQL 查询进行过滤(而不是在序列化结果之后),您可以使用相同的 LINQ 语句,只有 MyList 将是表示表的实体。

于 2013-05-08T22:08:15.990 回答