2012-04-10 9 views
3

こんにちは私はLINQでSQL文を書く方法を見つけようとしていますが、それは今のところSQLコマンドです:LINQ GROUP BYとMAX()

SELECT cs.Site_Name, MAX(ed.EffectiveDate_Date) 
FROM [WAPMaster].[Factsheets].[EffectiveDate] ed, 
[WAPMaster].[Configuration].[Site] cs 
WHERE cs.Site_Id = ed.EffectiveDate_SiteId 
GROUP BY cs.Site_Name 

誰かが私にlinqの構文を教えてもらえますか?おかげ

**は私がこれまでに(感謝levanlevi)

var test = (from e in this._wapDatabase.EffectiveDates 
      join c in this._wapDatabase.Sites 
      on c.Site_Id equals e.EffectiveDate_SiteId 
      group e by c.Site_Name into r 
      select new 
      { 
       r.Key.SiteName, 
       EffectiveDate = r.Max(d => d.EffectiveDate_Date) 
      }); 

これをしようとしているしかし、私は次のエラーを取得しています:

http://i.stack.imgur.com/AkJ5V.png

+2

ジャストノートLINQに* SQL *クエリを*すばやく*翻訳しても意味がありません。 SQLを使用してください。 Linq *は良くない*。 – Tigran

答えて

10
SELECT cs.Site_Name , 
     MAX(ed.EffectiveDate_Date) 
FROM [WAPMaster].[Factsheets].[EffectiveDate] ed , 
     [WAPMaster].[Configuration].[Site] cs 
WHERE cs.Site_Id = ed.EffectiveDate_SiteId 
GROUP BY cs.Site_Name 



from e in WAPMaster.Factsheets.EffectiveDate 
join c in WAPMaster.Configuration.Site 
on c.Site_Id equals e.EffectiveDate_SiteId 
group e by c.Site_Name into r 
select new { SiteName = r.Key, EffectiveDate = r.Max(d=>d.EffectiveDate_Date)} 
+0

本当に近いように見えますが、「結合方法を解決できません」と言われています。 –

+0

http://i.stack.imgur.com/Z9o9E.pngそれは私が得ているエラーです。 –

+0

エンティティフレームワークを使用していますか? LinqToSqlクラス間に接続がありますか? – levi

1
var test = (from effectiveDates in this._wapDatabase.EffectiveDates       
      from sites in this._wapDatabase.Sites       
      where sites.Site_Id = effectiveDates.EffectiveDate_SiteId 
        group effectiveDates by sites.Site_Id into g       
      select new { siteId = g.key , effectiveDate = g.max(ed => ed.EffectiveDate_Date)});