-1

嗨,我创建了一个类来从我的客户的帐户表中获取值,我为此创建了一个类。我想通知 AccountId 和我想要返回结果的表的字段(例如 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;

您可以从对象中获取所有字段!所以任务可以通过一个数据库调用来完成

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