首页 > 解决方案 > 如何将此 SQL 转换为实体框架 LINQ 查询

问题描述

有人可以帮我将此 SQL 查询转换为 EntityFramework LINQ 吗?实体架构

DECLARE @UserId varchar(50) = '123'
SELECT
   TL.TrackId, 
   COUNT(*) AS LikeCount,
   (SELECT IIF(COUNT(*) > 0, 'true','false') FROM UserTrackLikes WHERE
    UserId = @UserId AND TrackId = TL.TrackId) AS IsLiked
FROM TrackList AS TL
LEFT OUTER JOIN UserTrackLikes AS UTL 
ON UTL.TrackId = TL.TrackId
GROUP BY TL.TrackId

标签: sql.netlinqc#-4.0entity-framework-6

解决方案


您可以使用查询语法:

int userId = 123;
var result = (from trackList in context.TrackLists
              select new 
              {
                 trackList.TrackId,
                 LikeCount = trackList.Likes.Count(),
                 IsLiked = trackList.Likes.Any(x => x.UserId == userId)
              }).ToList();

假设这里Likes是 的集合UserTrackLike,声明如下:

public ICollection<UserTrackLike> Likes { get; set; }

推荐阅读