C# 如何编写iGroup的结果?

C# 如何编写iGroup的结果?,c#,linq,C#,Linq,我编写了以下LINQ查询: public IEnumerable DailyReturns() { var a = from exec in executions group exec by exec.TimeStamp.Date into execGroup select new { TimeStamp = execGroup.Key, CashFlow = execGroup.Sum(e => e.CashFlow())};

我编写了以下LINQ查询:

public IEnumerable DailyReturns()
{
    var a =  from exec in executions
             group exec by exec.TimeStamp.Date into execGroup
             select new { TimeStamp = execGroup.Key, CashFlow = execGroup.Sum(e => e.CashFlow())};
    return a;
}
我收到一个未处理的异常:
System.InvalidCastException:指定的强制转换无效。
当我尝试:

foreach (KeyValuePair<DateTime, double> p in s.Executions.DailyReturns())
{
    Console.WriteLine(p.Key.ToString() + ',' + p.Value.ToString());
}

您返回的是匿名类型,而不是
KeyValuePair

您可以通过向方法添加适当的类型来解决此问题:

public IEnumerable<KeyValuePair<DateTime,double>> DailyReturns() {
    return   from exec in executions
             group exec by exec.TimeStamp.Date into execGroup
             select new KeyValuePair<DateTime,double>(
                 execGroup.Key
             ,   execGroup.Sum(e => e.CashFlow())
             );
}
public IEnumerable DailyReturns(){
从执行中的exec返回
按exec.TimeStamp.Date将exec分组到execGroup中
选择新的KeyValuePair(
execGroup.Key
,execGroup.Sum(e=>e.CashFlow())
);
}

select new{}
生成一个-它不是
KeyValuePair
,因此不能强制转换它!
public IEnumerable<KeyValuePair<DateTime,double>> DailyReturns() {
    return   from exec in executions
             group exec by exec.TimeStamp.Date into execGroup
             select new KeyValuePair<DateTime,double>(
                 execGroup.Key
             ,   execGroup.Sum(e => e.CashFlow())
             );
}