0

所以,我想在C#.

首先,我使用以下方式加载数据LINQ

 var query = (from c in customer
                where c.id.Equals(customer_id)
                orderby c.id
                select c).FirstOrDefault();

然后我使dictionary包含数据库中的字段名称和标签。

 Dictionary<string, string> list = new Dictionary<string, string>();
            list.Add("name", "Full Name");
            list.Add("address", "Address");
            list.Add("phone", "Customer Phone");
            list.Add("email", "Customer Email");

基本上我想迭代整个dictionary并使用key作为字段名称标识符:

foreach (var pair in list)
            {
                graphic.DrawString(pair.Value, font, brush, startX, startY + offset);
                graphic.DrawString(":", font, brush, semicolonPos, startY + offset);
                graphic.DrawString(query.[pair.Key], font, brush, semicolonPos, startY + offset); // This is not working, any suggestion?
                offset += 40;
            }

所以我的问题是,是否有可能有类似的东西**query.[pair.Key]**,或者你对这种情况有什么建议?

我基本上是一名PHP程序员,所以也许我的心态仍然在网络编程上:D。对不起,如果我的问题令人困惑。

4

3 回答 3

1
foreach (var pair in list)
{
    graphic.DrawString(pair.Value, font, brush, startX, startY + offset);
    graphic.DrawString(":", font, brush, semicolonPos, startY + offset);  

    var pi=typeof(Customer).GetProperty(pair.key);
    var val= pi.GetValue(query,null);
    graphic.DrawString(val, font, brush, semicolonPos, startY + offset);
}
于 2013-02-01T15:51:47.740 回答
0

您可以使用 pair.Key 而不是 query.[pair.Key]

 graphic.DrawString(pair.Key , font, brush, semicolonPos, startY + offset);query.[pair.Key]
于 2013-02-01T15:46:49.987 回答
0

您尝试做的并不是最佳实践,因为它使用魔术字符串来尝试访问客户对象的属性值。您也没有任何关注点分离 - 视图与数据访问等混合在一起。

您尚未显示“客户”变量是什么类型,但理想情况下,您将拥有一个Customer类型,然后您的“视图”将以强类型方式访问属性。如果您描述您使用的 UI 技术,我可以添加一个示例。

于 2013-02-01T15:54:40.460 回答