2013-04-24 49 views
0

我是LinQ的Newbi,我在linQ有羣組問題。
我婉這樣的查詢:使用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

可能重複http://stackoverflow.com/questions/12482339/一個簡單的例子VB-淨LINQ組逐多列) – Neolisk 2013-04-24 14:17:47

回答

2

我很想這個SQL查詢轉換爲LINQ給你,但我認爲這會浪費你學習自己的機會。

微軟有很多關於VB.NET Linq情況的網頁:101 Linq Samples

你甚至可以找到一個Group By using Multiple Columns的例子。

良好的學習。 :)

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


    }; 

你可以看到下面的鏈接

Group and sum in linq

[VB.NET LINQ集團按多列(的