2011-11-29 26 views
1

.Net应用程序调用Stored Procedure并返回存储为'result'的集合。我希望能够通过'CreatorLineOfBusinessID'对结果进行分组。它会将该字段与其他几个字段一起返回。我想在'结果'数据集上使用LINQ查询。提前致谢。ASP.Net按照System.Generic.IEnumerable集合的语法的LINQ to SQL组。

Dim result As IEnumerable(Of eRefer_Reports.uspReport_ReferralsSentBetweenLinesOfBusinessResult) 

      strFromLOBID = " " 
      Session("FromLineOfBusiness") = strFromLOBID 
      strToLOBID = " " 
      Session("ToLineOfBusiness") = strToLOBID 

      result = repository.GetQueryResults(CDate(Me.txtStartDate.Text), CDate(Me.txtEndDate.Text), strFromLOBID, strToLOBID) 
      BindGridView(result)   
+0

由于'Lcarus'已经指出你不需要使用LINQ来完成这个分组。因为你的结果已经是'IEnumerable ',所以你也可以使用GroupBy方法。 – Jeremy

+0

@Susan你怎么样?你是否能够将报告分组? – Jeremy

+0

对不起,它已经有一段时间了,但一直在度假。我正在努力处理语法。我试图:BindGridView(result.GroupBy(CreatorLineOfBusinessID)),但这不起作用。对不起,成为这样的新手! – Susan

回答

1
Dim query = result.GroupBy(Function(x) x.ID).ToList() 

是否应组的结果你想要的方式进行迭代。

+1

不挑剔,但她确实说“LINQ查询”。 :D否则是的,我也只是使用这个'Enumerable.GroupBy(Of TSource,TKey)'。 – Jeremy

+0

@JeremyChild:是的,你说得对。在那种情况下,杰里米的回答就是她正在寻找的东西。 – Icarus

+0

@Lusus但同样的事情:D LINQ To Objects无疑会在你没有意识到的情况下使用IEnumerable.GroupBy。使用GroupBy方法可以获得更简洁的代码。 – Jeremy

2

您是否对Linq分组做过任何研究?这里尝试101点的例子:http://msdn.microsoft.com/en-us/vstudio/bb688088

Dim orderGroups = From p In results Group p By Key = p.CreatorLineOfBusinessID Into Group _ 
Select CreatorBusinessId = Key, Referrals = Group 

然后刚过orderGroups使用Key和财产转介,这将是一个IEnumerable<eRefer_Reports.uspReport_ReferralsSentBetweenLinesOfBusinessResult>

For Each lobBusiness in orderGroups 

' Get the lobBusinessId : .CreatorBusinessId 
' Get the IEnumerable results: .Referrals 

Next