我在linq查询中遇到了一些麻烦。这是一个简单的问题,但我不确定接近它的最佳方式是什么。我有两个表叫Artist
和Song
(我只显示相关字段):Linq to SQL - 从两个表中返回记录详细信息
ARTIST - int ArtistID (pk)
varchar Name
SONG - int SongID (pk)
uniqueidentifier UserID (To lookup songs the user has added to their account)
int ArtistID (foreign key to ArtistID in Artist table)
varchar songName
我想什么做的,是建立在我的DAL其中检索所有用户的歌曲的方法(给定UserID),并将其显示在一个将歌手姓名与歌曲相结合的转发器中(因此最终输出将为ArtistName - songName
)。我创建了这个查询:
var query = from p2 in db.SONG
where p2.UserID == givenUserID
join p in db.ARTIST
on p2.ArtistID equals p.ArtistID
select new ArtistSongStruct
{
ArtistName = p.Name,
songName = p2.songName
};
return query;
这可以在我的业务层进行调试并读取正确值的程度。但是,ArtistSongStruct
是我在DAL中为此方法创建的自定义结构。我不确定这是否是一种很好的做事方式。其次,即使这是返回到业务层,我不能让中继器显示实际值。它显示一个错误,声明没有名称为ArtistName/songName
的属性。
基于ArtistID返回艺术家和他们的歌曲的最佳方式是什么? 感谢您的任何建议。我对L2S相当陌生,所以这有点混乱。
+1的记忆ToList() – 2010-02-23 18:31:56
感谢您的快速回复。我试图返回一个ToList(),但重复器会抛出一个错误,说'DataBinding:'MyProj.DAL + ArtistSongStruct'不包含名为'ArtistName'的属性(我的中继器代码是<%#DataBinder .Eval(Container.DataItem,“ArtistName”)%>' – XSL 2010-02-23 18:39:00
我应该添加,我的DAL中的方法是: 'public static List GetUserLinks(Guid cUser)' –
XSL
2010-02-23 18:39:57