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