我有以下功能(如果重要,它托管在 WCF 服务中):
public List<IceVsRepositoryFile> GetRepositoryFilesByRepositoryId(int repId)
{
var entity = new IceVSEntities();
var files = from p in entity.Files where p.RepositoryId == repId select p.FileId;
List<long> iList = files.ToList();
var repFiles = from p in entity.RepositoryFiles where iList.Contains(p.FileId) select p;
if (!repFiles.Any())
return null;
var retFiles = repFiles.ToList().Select(z => new IceVsRepositoryFile
{
FileId = (int)z.FileId,
RollbackFileId = (int)z.RollbackFileId,
UserId = (int)z.UserId,
FileContents = z.FileContents,
ChangeDescription = z.ChangeDescription
}).ToList();
return retFiles;
}
当我运行此函数时,我收到以下错误消息:“LINQ to Entities 无法识别方法 'Boolean Contains(Int64)' 方法,并且此方法无法转换为存储表达式。
我明白为什么我会收到错误消息。我的问题是,如何重写我的查询以使其按预期工作?我的后端数据库,如果重要的话,如果是 SqlLite 3。我使用的是 .NET 3.5。