繁体   English   中英

Linq 选择表映射(实体框架)

[英]Linq select tablemapping(Entity framework)

我有以下表格

**Track Table**
+---------------+---------------+--------------------+
| TrackId        | TrackName    |       Path         |
+===============+===============+====================+
| 1             | jb            | http://domain/1.mp3|
+---------------+---------------+--------------------+
| 2             | remix         | http://domain/2.mp3|
+---------------+---------------+--------------------+

**Favorite Table**
    +---------------+---------------+--------------------+
    | favoriteId    | ProfileId     |       TrackId      |
    +===============+===============+====================+
    | 10            | 2130          | 1                  |
    +---------------+---------------+--------------------+
    | 11            | 2132          | 2                  |
    +---------------+---------------+--------------------+

我需要将曲目选择到一个模型中,我必须在其中包含一个布尔字段IsFavorite 现在我的逻辑如下:

1.Select Tracks
2.Select all favorites by profile
3.Iterate to both list and fill field "IsFavorite"

有没有更好的方法可以解决相同的问题?

以下是我当前的逻辑代码

Var ActiveTracks = jukeboxTrackService.GetActiveTracks();
var UserFavorites = jukeboxTrackService.GetFavoritesByProfile(ProfileId);
foreach (var item in ActiveTracks )
{
    foreach (var fav in UserFavorites)
    {
        if (item.JukeBoxTrackId == fav.TrackId)
        {
            item.IsFavorite = true;
        }
    }
}

return ActiveTracks ;

提前致谢。

(from tr in ActiveTracks 
join usrfav in UserFavorites on tr.TrackId equals usr.TrackId into UsrTracks
from usrtr in  UsrTracks.DefaultIfEmpty()
select new Track
{ 
  IsFavorite = (usrfav.TrackId == null) ? false : true 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM