使用分组依据进行查询

本文关键字:查询 | 更新日期: 2023-09-27 18:29:40

我正在尝试使用groupby语句进行查询,但到目前为止没有成功。

我有一张表,里面有不同类型的活动(tblExcursion)和一张表(tblReserveDetail)。在tblExcursion中,我有一个列"GroupName"。一个GroupName下有多个活动(例如皮划艇、帆船、水上运动是GroupName Watersports)。

现在,我想检索每个GroupName的参与者数量(而不是每个活动/游览!)。但我并不是用.GroupBy()或group。。。通过

这是我使用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

使用分组依据进行查询

您想要按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)
    ...
}