我有一个EF模型有3个表,Artist
,Movie
和Movie_Artist_Job
。 Movie_Artist_Job
只是一个外键表:复杂的LINQ到实体查询
MovieId,ArtistId,JobId.
我试图让一个结果是这样的:
ArtistName1,剧场1
ArtistName1,电影2
Artistname2,剧场1
Artistname2,Movie3
等等
现在我这样做:
var query = (
from items in _objEntities.Movie_Artist_Job
where items.Artist.FulleName != string.Empty
select items.Artist.FulleName).Distinct<string>();
List<ThumbItem> Items = new List<ThumbItem>();
foreach (string fullName in query)
{
var matching = (
from movie in _objEntities.Movie_Artist_Job
where movie.Artist.FulleName == fullName
select movie.Movie)
.Distinct<Movie>();
if (matching.Count() > 0)
{
foreach (Movie movies in matching)
{
if (movies != null && movies.IsDeleted == false)
{
new ThumbItem(fullName, movies.title);
}
}
}
}
它的工作原理,但它需要年龄...
如何乐观中任何线索?
非常感谢你的帮助。
你试过分析这个?您可以使用SQL事件探查器找出在封面下执行的查询。我敢打赌,1.太多的查询被执行,2.你缺少一些数据库索引。 – Steven 2012-01-02 12:31:47