2015-02-11 74 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