如果任何匹配任何在列表中使用实体框架

本文关键字:实体 框架 列表 任何匹 任何 如果 | 更新日期: 2023-09-27 18:16:39

我有这段代码:

var files = (from f in _fileRep.GetFiles()
              where fileID.Contains(f.FileID)
              select f.FileName).ToList();
var destFiles = (from f in _fileRep.GetFiles()
                    where f.FolderID == destFolderID 
                     select f.FileName).ToList();
bool valid = destFiles.Any(x => files.Contains(x));

fileID是int[],我试图验证是否存在一个文件名列表,其中FolderID匹配destFolderID在数据库中移动文件时。

I'm getting:

"Unable to create a null constant value of type 'System.Int32[]'. 
Only entity types, enumeration types or primitive types are 
supported in this context."

如果任何匹配任何在列表中使用实体框架

似乎fileID是空的。如果它为空,可以使用??操作符轻松地将其转换为空数组。此外,除非您确实需要通过索引访问项目,否则.ToList可能是不必要的。

你可以试试:

fileID = fileID ?? new int[0];
var files = _fileRep.GetFiles().Where(f => fileID.Contains(f.FileID));
var destFiles = _fileRep.GetFiles().Where(f => f.FolderID == destFolderID);
bool valid = files.Join(destFiles, f => f.FileName, f => f.FileName).Any();

或者

fileID = fileID ?? new int[0];
bool valid = 
    (from f in _fileRep.GetFiles()
     join g in _fileRep.GetFiles() on f.FileName equals g.FileName
     where fileID.Contains(f.FileID) && g.FolderID == destFolderID
     select f).Any();