-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 に答える