我在这里生成了一个列表,这个列表是由一个长查询生成的,该查询将数据用于抽取报表。将字典转换为列表
var result =
from..
where..
select new { sale.Id, Username = u.Name, Amount = p.amount};
output = result.Tolist();
但是,我想通过创建自己的值列表来摆脱那个长查询。所以我创建了一个字典来存储密钥和价值。 我的目的是转换字典背到具有类似上面的查询相同的输出列表,以便可以抽我的报告
public static object GetSalesDataBySaleOrderID(SaleOrder sale)
{
List<KeyValuePair<string, object>> list = new List<KeyValuePair<string, object>>();
for (int i = 0; i < sale.saleOrderItem.Count(); i++)
{
Dictionary<string, object> result = new Dictionary<string, object>()
{
{sale.Id.ToString(), sale.Id},
{"UserName", sale.User.GetSingleUserById(sale.saleOrderItem[i].UserId).Name},
{"Amount", sale.saleOrderItem[i].Amount},
};
list.Add(result);
}
return list;
}
我在list.Add(result);
错误得到了一个错误5参数 '1':不能转换从 'System.Collections.Generic.Dictionary' 到 'System.Collections.Generic.KeyValuePair'
---编辑----------- -
我已更改为List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
并解决了我的错误。
但是我仍然在字典格式
所获得的价值,这应该是在列表中的预期输出格式
我改变了我的答案。让我知道它是否符合您的需求。 –
你的要求看起来很奇怪,我不确定我明白你的目标是什么。你想把你的结果对象,并将它们转换为从属性名称映射到值的字典?有更有效的方法来获得这种理想的行为。实际上,使用[ExpandoObject](http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx)可以免费为您提供这一切,如果这是您想要的。 –