2014-09-12 65 views
0

我有Rows对象是IEnumerable<dynamic>,它有5个属性(列)和100行。一个属性/列的是Group,只有2个不同的组了100行,所以首先我对它运行鲜明:c#使用选择Linq语句?

IEnumerable<dynamic> Groups = Rows.Select(x => x.Group).Distinct(); 

这工作,没有错误。

然后我想通过他们回到我Rows对象和循环,其中该组=组中Rows,像这样:

foreach (string Group in Groups) 
{ 
    IEnumerable<dynamic> GroupData = 
     from rowdata in Rows 
     where rowdata.Group = @Group 
     select rowdata; 

,但我得到的最后一行此错误:

'WebMatrix.Data.DynamicRecord' does not contain a definition for 'Group' 

任何人都知道为什么这不起作用?

当然,我可以做另一种方式,但我想用c#select语句代替。我怎么能?


编辑显示用法:

foreach (var row in GroupData){ 
     string ThisGroup = row.Group 
    } 
    ... 
+0

“@ Group”是什么意思是说'where rowdate.Group =“Group”' – MethodMan 2014-09-12 16:19:37

+3

1)'='是赋值,而不是比较2)等价于'Rows.Select(x => x。组)''将从行中的x选择x.Group'。 – 2014-09-12 16:20:56

+0

你可以在哪里使用GroupData显示代码? – 2014-09-12 16:21:54

回答

3

而不是选择两次,集团在Group值:

IEnumerable<IGrouping<string, dynamic>> groups = Rows.GroupBy(x => (string)x.Group); 

现在,你可以通过结果循环:

foreach (IGrouping<string, dynamic> group in groups) { 
    ... 
} 

The IGrouping<>对象具有Key属性,它是您分组的值,也是组中值的集合。

+0

谢谢,这工作。 – 2014-09-12 17:01:08