存储过程使用连接从一个表中选择所有字段

时间:2009-08-06 00:20:19

标签: linq-to-sql join skip asqueryable

在处理与skip扩展的多对多关系时,我对linq to sql感到非常沮丧。它不允许我使用连接查询。不确定是SQL Server 2005的情况,但我目前正在使用SQL Server 2000.

现在我考虑编写一个存储过程来获取一个由两个表匹配的表,例如Album_Photo(Album-> Album_Photo< -Photo)和Photo表只需要照片数据,因此我将相册的ID与Album_Photo匹配,并使用该ID匹配照片。在存储过程中,我只是获取所有连接的数据。之后在linq to sql中,我创建了一个新的Album对象。

e.g。

var albums = (from r in result
    where (modifier_id == r.ModifierID || user_id == r.UserID)
    select new Album() { 
        Name = r.Name, 
        UserID = r.UserID, 
        ModifierID = r.ModifierID, 
        ID = r.ID, 
        DateCreated = r.DateCreated, 
        Description = r.Description, 
        Filename = r.Filename 
    }).AsQueryable();

我使用AsQueryable将结果作为IQueryable而不是IEnumerable。后来我想对该集合做一些事情,它给了我这个错误:

System.InvalidOperationException:无法多次枚举查询结果。

1 个答案:

答案 0 :(得分:0)

听起来您的情况是,在您希望稍后在代码中过滤查询时,查询已经执行。

你能做点像......

var albums =(blah blah blah).AsQueryable()。当你有足够的信息来处理时,where(filterClause)

如果您稍后在代码中尝试使用albums.where(过滤器)会发生什么?这是你在尝试什么?