SQL LINQ Lambda用于内连接以选择特定列

时间:2015-02-11 13:30:22

标签: c# sql linq lambda

我正在尝试将以下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语法(我今天是全新的)。谷歌的时间没有帮助,也许这里有人可以吗?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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();

答案 2 :(得分:0)

试试这个:

List<String> listOfCities;  

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

我在计算机上测试过,但它确实有效。 TResult为第3个lambda函数(venue, ev) => venue.venueAddress)返回,实际上是重新列表中的对象元素。 我在.Distinct()之前添加了此.ToList(),要求提供包含不同元素的列表。