以下是我写的
return (from p in returnObject.Portfolios.ToList()
from childData in p.ChildData.ToList()
from retuns in p.Returns.ToList()
select new Dictionary<DateTime, double> ()
{ p.EndDate, retuns.Value }
).ToDictionary<DateTime,double>();获取误差
没有重载方法'Add‘接受'1’参数
在我犯错误的地方
我正在使用C#3.0
谢谢
发布于 2010-05-20 06:42:07
好吧,您正在调用ToDictionary时,除了隐含的第一个参数之外,没有其他参数。您需要告诉它输入序列的哪一部分是键,哪个是值。您还试图为每个元素选择一个新的字典,我非常怀疑您是否想要这样做。试试这个:
var dictionary = (from p in returnObject.Portfolios.ToList()
from childData in p.ChildData.ToList()
from returns in p.Returns.ToList()
select new { p.EndDate, returns.Value })
.ToDictionary(x => x.EndDate, x => x.Value);顺便问一下,你确定你需要打给ToList的所有电话吗?这似乎有点不寻常。
发布于 2010-05-20 06:46:27
试着:
return (from p in returnObject.Portfolios
from childData in p.ChildData
from retuns in p.Returns
select new
{p.EndDate, retuns.Value }).ToDictionary(d => d.EndDate , d=>
d.Value);如果你在使用字典,你应该提到关键和价值。这不像一份名单。
如果它在一个列表中:
return (from p in returnObject.Portfolios
from childData in p.ChildData
from retuns in p.Returns
select new
{p.EndDate, retuns.Value }).ToList();发布于 2010-05-20 06:40:33
而不是select new Dictionary<DateTime, double>,它应该是select new KeyValuePair<DateTime, double>(...),ToDictionary()应该被赋予两个委托来选择键和值。
https://stackoverflow.com/questions/2871494
复制相似问题