我是LinQ的Newbi,我在linQ中遇到了问题 我想这样查询:
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
如何将上面的查询转换为LinQ(VB.NET)
感谢 bestRegards
答案 0 :(得分:2)
我很想把这个SQL查询转换为LINQ给你,但我认为这样做会浪费你自己学习的机会。
有很多来自Microsoft的很多VB.NET Linq情况的页面:101 Linq Samples。
您甚至可以找到Group By using Multiple Columns的示例。
良好的学习。 :)
答案 1 :(得分: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,
....
....
};
您可以在以下链接中看到一个简单示例