用group by查询

时间:2012-04-02 12:58:12

标签: c# linq group-by

我正在努力,到目前为止还没有成功使用group by-statement进行查询。

我有一个包含不同类型活动的表(tblExcursion)和一个包含计划(tblReservationDetail)的表。在tblExcursion中我有一个列'GroupName'。一个GroupName下有多个活动(例如皮划艇,帆船,waterpolo是groupname Watersports)。

现在我想检索每个GroupName的参与者数量(不是每个活动/游览!)。但是我没有通过.GroupBy()或分组......来到

这是我使用activityname而不是groupname的查询:

var vAllExcursions = (from oExcursion in clsApplication._oDBConnection.tblExcursions
                      select oExcursion).ToList();

foreach (tblExcursion EXitem in vAllExcursions)
{
    var vAllExcursionsPerType = (from oReservationDetail in clsApplication._oDBConnection.tblReservationDetails
                                         where oReservationDetail.StartTime.Date.Year == this.cboYear.getSelectedID()
                                         && oReservationDetail.StartTime.Date.Month == this.cboMonth.getSelectedID()
                                         && oReservationDetail.ExcursionID == EXitem.ID
                                         select oReservationDetail).ToList();
}

Here I fill my datagrid

1 个答案:

答案 0 :(得分:1)

您希望按GroupName分组以获取群组:

var vAllExcursions = clsApplication._oDBConnection.tblExcursions
    .GroupBy(ex => ex.GroupName)
    .ToList();

然后在你的内循环中,通过检查ExcursionID是否匹配与该组关联的列表中的任何id来查找任何相关的预留:

foreach (var EXitemGroup in vAllExcursions)
{
    var excursionIds = EXitemGroup.Select (exg => exg.ID).ToArray();
    ...
        && excursionIds.Contains(oReservationDetail.ExcursionID)
    ...
}