在sql server 2008上将select查询转换为linq

时间:2013-06-08 18:17:46

标签: linq sql-server-2008 linq-to-sql sql-to-linq-conversion

我有两张表:Album(AlbumId, AlbumName)Photo(PhotoId, PhotoName, AlbumId)

我有:

 select top 1 Photo.PhotoId
 from Photo
 where Album.AlbumId=Photo.AlbumId
 order by NEWID()

这是随机返回一个记录

我想将其转换为Linq to sql。我试过但没有成功。

2 个答案:

答案 0 :(得分:0)

我相信你需要加入这些表格。此外,它取决于您想要创建随机Guid时使用的语言 - 我的示例使用C#。在查询语法中,它应该类似于:

from p in Photo
join a in Album on a.AlbumId equals p.AlbumId
orderby Guid.NewGuid()
take 1
select p.PhotoId

答案 1 :(得分:0)

试试这个:

var photoId = ( from photo in collecPhotos
                join album in collecAlbums on photo.AlbumId equals album.AlbumId
                orderby NEWID()
                select photo.PhotoId).First();

其中collecPhotoscollecAlbums是您的照片和相册实体的集合,即表格中的数据。所以它也可以是myDbContext.PhotosmyDbContext.Albums,其中myDbContext是您的Linq-to-Sql DataContext。