【问题标题】:SQL LINQ Lambda for inner join to select specific column用于内部连接的 SQL LINQ Lambda 以选择特定列
【发布时间】:2015-02-11 13:30:22
【问题描述】:

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

【问题讨论】:

  • 你在使用实体框架吗?
  • 是的!我正在使用实体框架。

标签: c# sql linq lambda


【解决方案1】:
List<String> listOfCities = db.Venue.Join(db.Event,
                               venue => venue.venueName, 
                               ev => ev.venueName, 
                               (venue, ev) => venue.venueAddress)
                               .Distinct().ToList();

【讨论】:

    【解决方案2】:

    试试这个:

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

    我在我的电脑上进行了测试,它工作正常。 为第三个 lambda 函数 (venue, ev) =&gt; venue.venueAddress) 返回的 TResult 实际上是重传列表中的对象元素。 我在.ToList() 之前添加了这个.Distinct(),以要求提供具有不同元素的列表。

    【讨论】:

    • 是的,我现在看到了,lambda 可能有点棘手。感谢您的帮助!
    【解决方案3】:

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

    【讨论】:

    • 另一个问题是该字段是否有外键以及两个表之间的关系是什么。 db.Venue.Where(v=> v.Event.Any()).Select(v=> v.venueaddress).Distinct().ToList() 也可以工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    相关资源
    最近更新 更多