SQL 用于内部连接的 LINQ Lambda select 特定列

SQL LINQ Lambda for inner join to select specific column

我正在尝试将以下 SQL 查询转换为 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();

这是我试图转换成我的问题的另一个问题的解决方案,这显然不起作用,因为我没有得到 lambda 语法(我今天是全新的)。几个小时的 google 没有帮助,也许这里有人可以?

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

您不必使用 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();

试试这个:

List<String> listOfCities;  

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

我在我的电脑上测试过,它可以工作。 第三个 lambda 函数 (venue, ev) => venue.venueAddress) 返回的 TResult 实际上是 reterned 列表中的对象元素。 我在 .ToList() 之前添加了 .Distinct() 以请求包含不同元素的列表。