Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ:如何将复合LINQ结果转换为字典_C#_Linq - Fatal编程技术网

C# LINQ:如何将复合LINQ结果转换为字典

C# LINQ:如何将复合LINQ结果转换为字典,c#,linq,C#,Linq,我正在尝试使用LINQ对将要用于报表的数据进行排序。报告结构如下所示: 开发商名称 日期|小时|项目名称|周末 日期|小时|项目名称|周末 日期|小时|项目名称|结束一周 开发商名称 日期|小时|项目名称|周末 日期|小时|项目名称|结束一周 开发商名称 日期|小时|项目名称|周末 日期|小时|项目名称|周末 日期|小时|项目名称|结束一周 我从一个.dbml文件中获取所有数据。对于此类排序,我有以下linq查询: DataClasses1DataContext context = new

我正在尝试使用LINQ对将要用于报表的数据进行排序。报告结构如下所示:


开发商名称 日期|小时|项目名称|周末
日期|小时|项目名称|周末
日期|小时|项目名称|结束一周

开发商名称 日期|小时|项目名称|周末
日期|小时|项目名称|结束一周

开发商名称 日期|小时|项目名称|周末
日期|小时|项目名称|周末
日期|小时|项目名称|结束一周


我从一个.dbml文件中获取所有数据。对于此类排序,我有以下linq查询:

DataClasses1DataContext context = new DataClasses1DataContext();
        System.Data.Linq.ISingleResult<s_SummaryReportResult> res = context.s_timesheet_SummaryReport(startDate, endDate);

        var orb = from c in res
                  group c by c.developer
                  into devgroup
                  select new 
                  {   
                      Dev = devgroup.Key,
                      devData = from o in res
                                      select new {
                                        o.Date,
                                        o.Hours,
                                        o.projectname,
                                        o.week_ending
                                      }};

IDictionary dic_orb = orb.ToDictionary(result => result.Dev.ToString(), result => result.devData);


        foreach (KeyValuePair<string, object> item in dic_orb)
        {
          object brr =  item.Value;
        }
DataClasses1DataContext=newdataclasses1datacontext();
System.Data.Linq.ISingleResult res=context.s_时间表_摘要报告(开始日期、结束日期);
var orb=从c到res
c组由c.developer编写
进入devgroup
选择新的
{   
Dev=devgroup.Key,
devData=从0到0的分辨率
选择新的{
o、 日期,
o、 小时,
o、 项目名称,
o、 周末
}};
IDictionary dic_orb=orb.ToDictionary(result=>result.Dev.ToString(),result=>result.devData);
foreach(dic_orb中的KeyValuePair项)
{
对象brr=项值;
}
可悲的是,在每一步我都会得到一个“无效的例外”

关于如何解决foreach,或者在某种意义上,如何更好地分组LINQ查询,有什么线索吗


提前感谢。

您确定结果是否正确。devData的类型为
object

换衣服

foreach (KeyValuePair<string, object> item in dic_orb)

你应该自动得到正确的类型。否则,请检查devData的类型,并相应地更改您的KeyValuePair。

是否确定结果。devData的类型为
对象

换衣服

foreach (KeyValuePair<string, object> item in dic_orb)

你应该自动得到正确的类型。否则,检查devData是什么类型,并相应地更改您的KeyValuePair。

dic_orb
是一个
字典,您可以使用

var brr = item.Value;
foreach(var b in brr)
{
}
如果只想迭代所有嵌套集合,可以使用

foreach(var b in dic_orb.SelectMany(kvp => kvp.Vaue))
{
}

dic_orb
是一个
字典
,您可以使用

var brr = item.Value;
foreach(var b in brr)
{
}
如果只想迭代所有嵌套集合,可以使用

foreach(var b in dic_orb.SelectMany(kvp => kvp.Vaue))
{
}

谢谢你的回答,但我仍然需要知道如何迭代brr,因为它有几个其他参数。谢谢你的回答,但我仍然需要知道如何迭代brr,因为它有几个其他参数。嗨,谢谢你的回答。这确实修复了强制转换异常,但我在尝试迭代该字典值时仍然存在问题。devData类型为System.Linq.Enumerable.where selectEnumerableiteratorhi,谢谢您的回答。这确实修复了强制转换异常,但我在尝试迭代该字典值时仍然存在问题。devData类型为System.Linq.Enumerable.Where SelectEnumerableInterator