2015-02-11 73 views
0

我試圖將以下SQL查詢轉換爲lambda語法以便直接將結果導入到列表中。SQL LINQ Lambda用於內部連接以選擇特定列

SELECT DISTINCT Venue.venueAddress 
FROM Venue 
INNER JOIN Event 
ON Venue.venueName = Event.venueName 

我現在擁有的是以下幾點:

List<String> listOfCities; 

    listOfCities = db.Venue.Join(db.Event, 
        venue => venue.venueName, 
        ev => ev.venueName, 
       (venue, ev) => new { Venue = venue, Event = ev}) 
        .Where(venueAndev => venueAndev.Venue.venueAddress).ToList(); 

這是從另一個問題,我想轉換成我的問題,這顯然因爲我沒有得到拉姆達不起作用的解決方案語法(我今天是全新的)。谷歌的時間沒有幫助,也許這裏有人可以?

+0

你使用的是實體框架嗎? – 2015-02-11 13:42:44

+0

是的!我正在使用實體框架。 – Ohlafl 2015-02-11 13:44:41

回答

0
List<String> listOfCities = db.Venue.Join(db.Event, 
           venue => venue.venueName, 
           ev => ev.venueName, 
           (venue, ev) => venue.venueAddress) 
           .Distinct().ToList(); 
+0

謝謝!!!!!! – Ohlafl 2015-02-11 13:56:12

0

你不必使用lambda語法:

List<string> listOfCities = (from v in db.Venue 
           join e in db.Event on v.venuename equals e.venuename 
           select v.venueaddress).Distinct().ToList(); 
+0

另一個問題是,如果這個字段是外鍵,那麼這兩個表之間的關係是什麼。 db.Venue.Where(v => v.Event.Any())。Select(v => v.venueaddress).Distinct()。ToList()也可以工作 – 2015-02-11 13:54:46

0

試試這個:

List<String> listOfCities; 

listOfCities = db.Venue.Join(db.Event, 
    venue => venue.venueName, 
    ev => ev.venueName, 
    (venue, ev) => venue.venueAddress) 
    .Distinct().ToList(); 

我在我的電腦測試,它的工作。 爲第三個lambda函數返回的TResult (venue, ev) => venue.venueAddress)實際上是重構列表中的對象元素。 我在.ToList()之前添加了這個.Distinct(),要求提供具有不同元素的列表。

+0

是的,我看到現在,lambda可以是有點棘手。感謝您的幫助! – Ohlafl 2015-02-11 13:57:22