-1

こんにちは、顧客のアカウント テーブルから値を取得するクラスを作成しました。そのためのクラスを作成しました。結果を返したいテーブルの AccountId と Field に通知したい (たとえば、FirstName)。これを達成するための最良の方法は何ですか?代替手段として以下のようなものを手に入れましたが、機能させることができません...

これは、名の結果を取得する方法です。

   LabelFirstName.Text = Manage.GetAccount(2, "FirstName"); // where 2 is the id I informed and FirstName is the Column I want to retrieve from the table.

結果は、たとえば "John" になります。

これは私が持っているものです:

public class Manage
{

    public Manage()
    {
    }

    public static string GetAccount(int AccountId, string Field)
    {
        LinqSqlDataContext contextLoad = new LinqSqlDataContext();

        var q = (from p in contextLoad.MyAccounts
                 where p.AccountId == AccountId
                 select p).Single();

        string var = q.??    // ?? would be my Field string "FirstName" for example

        return var;
    }

}

助けてください

ありがとう

4

4 に答える 4

1

次のように、Account オブジェクトを返し、必要な場所でプロパティを取得することをお勧めします。

public static Account GetAccount(int AccountId)
{
    LinqSqlDataContext contextLoad = new LinqSqlDataContext();

    var q = (from p in contextLoad.MyAccounts
             where p.AccountId == AccountId
             select p).Single();

    return q;
}

public void myMethod()
{
    var account = GetAccout(2);

    var accountName = account.FirstName;
    var accountNumber = account.Number;
    // ... and so on
}

これが本当に役に立たない場合は、他の投稿で言及されているようにリフレクションを使用できます。

幸運を。

于 2012-07-26T10:49:04.887 に答える
0

DataReaderは、この状況で役立つ場合があります。

    var q = from p in contextLoad.MyAccounts 
             where p.AccountId == AccountId 
             select p;


using (var command = dc.GetCommand(q)) 
{ 
    command.Connection.Open(); 
    using (var reader = command.ExecuteReader()) 
    { 
        // expecting one row
        if(reader.Read())
        { 
            return reader.GetString(reader.GetOrdinal(Value)); 
        } 
    } 
    return null;
} 
于 2012-07-26T10:56:48.023 に答える
0

クラスのオブジェクトを返すことができます

   public static Object GetAccount(int AccountId)
    {
        LinqSqlDataContext contextLoad = new LinqSqlDataContext();       
        var q = (from p in contextLoad.MyAccounts
                 where p.AccountId == AccountId
                 select p).FirstOrDefault();

        return q;
    }

var Account = GetAccount(int AccountId) as Account;
LabelFirstName.Text = Account.FirstName;
LabelLastName.Text = Account.LastName;

オブジェクトからすべてのフィールドを取得できます!! したがって、タスクは1回のデータベース呼び出しから達成可能になります

于 2012-07-26T10:37:33.167 に答える
0
string value = (string)q.GetType().GetProperty(Field).GetValue(q, null);
于 2012-07-26T10:39:46.537 に答える