如何将匿名类型转换为键值对对象
本文关键字:键值对 对象 类型转换 | 更新日期: 2023-09-27 17:57:22
我正在尝试找出一种从我的Web服务中获取数据的干净方法,即键/值对。
有没有办法接受这样的查询:
var q = db.Ratings.Select(x => new
{
x.pro,
x.con,
x.otherThoughts,
x.Item.title,
x.score,
x.subject
});
并且只返回一个键值对,其中键将是上面列出的列,以及它们对应的值?
而不是创建一个单独的类?
myDict.Add("pro", q.pro);
myDict.Add("con", q.con);
这效率不高,创建这样的类也不是,特别是如果我有几十种方法:
public class Rating
{
public string pro { get; set; }
public string con { get; set; }
}
我所有的搜索都会找到包含前两个代码示例的示例。
我不建议使用您正在查看的"非类型化"方法。
我会改用类型化对象,即您不想创建的对象。
但是,这是您问题的答案。您可以将数据表对象用于所需的内容。喜欢这个:
var items = new[]
{
new Item { Id = 1, Name = "test1" },
new Item { Id = 2, Name = "test2" }
};
var dataTable = new DataTable();
var propeties = typeof(Item).GetProperties();
Array.ForEach(propeties, arg => dataTable.Columns.Add(arg.Name, arg.PropertyType));
Array.ForEach(items, item => dataTable.Rows.Add(propeties.Select(arg => arg.GetValue(item, null)).ToArray()));
return dataTable;