我在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