在 LINQ 中使用字典键作为字段名称
本文关键字:字段 字典 LINQ | 更新日期: 2023-09-27 17:56:56
所以,我想在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。对不起,如果我的问题令人困惑。
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);
}
您可以使用 pair。键而不是查询。[对。键]
graphic.DrawString(pair.Key , font, brush, semicolonPos, startY + offset);query.[pair.Key]
您尝试执行的操作并不是特别最佳实践,因为它使用魔术字符串来尝试访问客户对象的属性值。您也没有任何关注点分离 - 视图与数据访问等混合在一起。
您尚未显示"客户"变量的类型,但理想情况下,您将具有Customer
类型,然后您的"视图"将以强类型方式访问属性。如果您描述您正在使用的 UI 技术,我可以添加一个示例。