2012-02-27 1 views
0

LINQをDataGrivdViewデータソースとして使用したいのですが...正しいSQLクエリがありますが、時間をかけて書き直していますLINQ ...LINQへのSQL ...正しい方向へのナッジが必要

SQL:

SELECT ICITEM.ITEMNO, ICITEM.[DESC], MAX(PORCPL.DTARRIVAL) AS Expr1 
FROM ICITEM INNER JOIN 
     PORCPL ON PORCPL.ITEMNO = ICITEM.ITEMNO 
WHERE (ICITEM.ITEMNO LIKE '%R001%') 
GROUP BY ICITEM.ITEMNO, ICITEM.[DESC] 

LINQでの私の微弱な試み(S):

Dim s = From items In db.ICITEMs 
    Where items.ITEMNO.Contains(Me.txtQuery.Text) Or items.DESC.Contains(Me.txtQuery.Text) 
    Join recDates In db.PORCPLs On items.ITEMNO Equals recDates.ITEMNO 
    Select [Item_ID] = items.ITEMNO, [Description] = items.DESC, [rd] = recDates.DTARRIVAL 

私のLINQログイン...

SELECT [t0].[ITEMNO] AS [Item_ID], [t0].[DESC] AS [Description], [t1].[DTARRIVAL] AS [rd] 
FROM [dbo].[ICITEM] AS [t0] 
INNER JOIN [dbo].[PORCPL] AS [t1] ON [t0].[ITEMNO] = [t1].[ITEMNO] 
WHERE ([t0].[ITEMNO] LIKE @p0) OR ([t0].[DESC] LIKE @p1) 
-- @p0: Input VarChar (Size = 8000; Prec = 0; Scale = 0) [%r001%] 
-- @p1: Input VarChar (Size = 8000; Prec = 0; Scale = 0) [%r001%] 
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1 

[rd]フィールドでMax関数を取得する方法を見つけることができません...すべての洞察力が最も高く評価されます。

答えて

0

Group Byを追加する必要があります。

Dim s = From items In db.ICITEMs 
Where items.ITEMNO.Contains(Me.txtQuery.Text) Or items.DESC.Contains(Me.txtQuery.Text) 
Join recDates In db.PORCPLs On items.ITEMNO Equals recDates.ITEMNO 
Group By items.ITEMNO, items.DESC Into MaxArrivalDate = Max(recDates.DTARRIVAL) 
Select [Item_ID] = items.ITEMNO, [Description] = items.DESC, [rd] = MaxArrivalDate 
+1

ああ、あまりにもありがとう...あまりにも多くの時間、私はこれを迷っていました。これは完全に動作します! – user1234960

0

あなたのLINQクエリに追加Containsを持っている: はここに役立つはずの例です。これが正しければ、ここにgroup byとmaxを持つ完全なlinqクエリがあります:

Dim s = From items In db.ICITEMs 
Where items.ITEMNO.Contains(Me.txtQuery.Text) Or items.DESC.Contains(Me.txtQuery.Text) 
Join recDates In db.PORCPLs On items.ITEMNO Equals recDates.ITEMNO 
Group By items.ITEMNO, items.DESC Into Group 
Let MaxArrival = Group.Max(Function(p) p.recDates.DTARRIVAL) 
Select [Item_ID] = ITEMNO, [Description] = DESC, [rd] = MaxArrival 
+0

私はいくつかのエラーがあったので、修正しました。 –

関連する問題