基本问题......
我有一个执行以下代码的方法:
IList<Gig> gigs = GetGigs().WithArtist(artistId).ToList();
Run Code Online (Sandbox Code Playgroud)
GetGigs()方法通过LinqToSql从我的数据库中获取Gigs ...
因此,当执行GetGigs().WithArtist(artistId).ToList()时,我得到以下异常:
Member access 'ListenTo.Shared.DO.Artist Artist' of 'ListenTo.Shared.DO.Act' not legal on type 'System.Collections.Generic.List`1[ListenTo.Shared.DO.Act]
Run Code Online (Sandbox Code Playgroud)
请注意,扩展功能"WithArtist"如下所示:
public static IQueryable<Gig> WithArtist(this IQueryable<Gig> qry, Guid artistId)
{
return from gig in qry
where gig.Acts.Any(act => (null != act.Artist) && (act.Artist.ID == artistId))
orderby gig.StartDate
select gig;
}
Run Code Online (Sandbox Code Playgroud)
如果我用一个在代码中构造gigs集合的方法替换GetGigs()方法(而不是通过LinqToSQL从DB中),我不会得到异常.
所以我很确定问题出在我的LinqToSQl代码而不是对象结构上.
但是,我没有IDEA为什么LinqToSQl版本无法正常工作,所以我在下面列出了所有相关代码.任何帮助都会非常感激地接受!
LinqToSQL代码....
public IQueryable<ListenTo.Shared.DO.Gig> GetGigs()
{
return from g in DBContext.Gigs
let acts = GetActs(g.ID)
join venue in DBContext.Venues on g.VenueID equals venue.ID
select new ListenTo.Shared.DO.Gig …Run Code Online (Sandbox Code Playgroud)