Vb.net 使用LinQ并按多个列分组

Vb.net 使用LinQ并按多个列分组,vb.net,linq,group-by,Vb.net,Linq,Group By,我是LinQ的新手,我在LinQ的group by有问题。 我想这样问: select MAX(TCheckpointGrouping.Id) AS CheckpointGroupingId, MAX(TCheckpointGrouping.MCheckpointId) AS CheckpointId, MAX(MCheckpoint.Name) AS CheckpointName, MAX(CAST(MCheckpoint.IsMajor AS VARCHAR)

我是LinQ的新手,我在LinQ的group by有问题。
我想这样问:

select MAX(TCheckpointGrouping.Id) AS CheckpointGroupingId, MAX(TCheckpointGrouping.MCheckpointId) AS CheckpointId, MAX(MCheckpoint.Name) AS CheckpointName, MAX(CAST(MCheckpoint.IsMajor AS VARCHAR)) AS IsMajor, MAX(TCheckpointGrouping.MIndicatorId) AS IndicatorId, MAX(MIndicator.Name) AS IndicatorName, MAX(MCriteria.Id) AS CriteriaId, MAX(MCriteria.Name) AS CriteriaName, MAX(MPrinciple.Id) AS PrincipleId, MAX(MPrinciple.Name) AS PrincipleName, MAX(TCheckpointGrouping.RelationToCheckPoint) AS RelationToCheckPoint from TCheckpointGrouping inner join MCheckpoint on MCheckpoint.Id = TCheckpointGrouping.MCheckpointId inner join MIndicator on MIndicator.Id = TCheckpointGrouping.MIndicatorId inner join MCriteria on MCriteria.Id = MIndicator.MCriteriaId inner join MPrinciple on MPrinciple.Id = MCriteria.MPrincipleId group by TCheckpointGrouping.MCheckpointId, TCheckpointGrouping.MIndicatorId 选择 最大值(TCheckpointGrouping.Id)作为CheckpointGroupingId, MAX(TCheckpointGrouping.MCheckpointId)作为检查点ID, MAX(MCheckpoint.Name)作为检查点名称, MAX(将MCheckpoint.IsMajor转换为VARCHAR))转换为IsMajor, 最大值(TCheckpointGrouping.MIndicatorId)作为指示符, MAX(MIndicator.Name)作为指示符名称, MAX(MCriteria.Id)作为标准Id, MAX(MCriteria.Name)作为标准名称, MAX(MPrinciple.Id)作为PrincipleId, MAX(MPrinciple.Name)作为PrincipleName, MAX(TCheckpointGrouping.RelationToCheckPoint)作为RelationToCheckPoint 从切点分组 MCheckpoint.Id=TCheckpointGrouping.MCheckpointId上的内部联接MCheckpoint MIndicator.Id=TCheckpointGrouping.MIndicator上的内部联接MIndicator MCriteria.Id=MIndicator.MCriteriaId上的内部联接MCriteria MPrinciple.Id=MCriteria.MPrincipleId上的内部联接MPrinciple 分组 TCheckpointGrouping.MCheckpointId, TCheckpointGrouping.MIndicatorId 如何将上面的查询转换为LinQ(VB.NET)

谢谢
Bestgrees

我很想为您将此SQL查询转换为LINQ,但我认为这将浪费您学习自己的机会

Microsoft提供了一个很棒的页面,其中包含很多VB.NET Linq情况:

你甚至可以找到一个例子


学得好。:)

我不确定,但你可以试试。在“选择部分”中,我没有包括所有列

var result= from TChkgp in TCheckpointGrouping
        join MCpoint in  MCheckpoint on  TChkgp.Id equals MCpoint.Id
    join MIndtor in MIndicator on TChkgp.MIndicatorId equals MIndtor.Id
    join MCrteia in MCriteria on MIndtor.Id equals MIndtor.MCriteriaId
    join MPrncple in MPrinciple on MCrteia.MPrincipleId equals MPrncple.Id
    group TChkgp by new (TChkgp.MCheckpointId,TChkgp.MIndicatorId} into g 
    select new {
    CheckpointGroupingId =TChkgp.Id.Max(),
    CheckpointId =TChkgp.MCheckpointId.Max,
    ....
    ....


    };
您可以在下面的链接中看到一个简单的示例

可能存在的副本