0

我是 LinQ 的 Newbi,我对 linQ 中的 group by 有疑问。
我想这样查询:

    选择
    MAX(TCheckpointGrouping.Id) 作为 CheckpointGroupingId,
    MAX(TCheckpointGrouping.MCheckpointId) AS CheckpointId,
    MAX(MCheckpoint.Name) 作为检查点名称,
    MAX(CAST(MCheckpoint.IsMajor AS VARCHAR)) 作为 IsMajor,
    MAX(TCheckpointGrouping.MIndicatorId) AS IndicatorId,
    MAX(MIndicator.Name) 作为指标名称,
    MAX(MCriteria.Id) 作为 CriteriaId,
    MAX(MCriteria.Name) AS CriteriaName,
    MAX(MPrinciple.Id) AS PrincipleId,
    MAX(MPrinciple.Name) AS PrincipalName,
    MAX(TCheckpointGrouping.RelationToCheckPoint) AS RelationToCheckPoint
    来自 TCheckpointGrouping
    在 MCheckpoint.Id = TCheckpointGrouping.MCheckpointId 上内连接 MCheckpoint
    内部连接 ​​MIndicator 上 MIndicator.Id = TCheckpointGrouping.MIndicatorId
    MCriteria.Id = MIndicator.MCriteriaId 上的内部连接 ​​MCriteria
    在 MPrinciple.Id = MCriteria.MPrincipleId 上内连接 MPrinciple
    通过...分组
    TCheckpointGrouping.MCheckpointId,
    TCheckpointGrouping.MIndicatorId

如何将上面的查询转换为 LinQ (VB.NET)

谢谢最好的问候

4

2 回答 2

2

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

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

您甚至可以通过使用 Multiple Columns 找到 Group的示例。

好学。:)

于 2013-04-24T13:12:03.580 回答
0

我不确定这个,但你可以试试。在选择部分我没有包括所有的列。

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,
    ....
    ....


    };

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

linq中的分组和求和

于 2013-04-24T13:40:04.350 回答