2013-06-03 13 views
2

任何匹配任何在名單上有這段代碼:如果使用實體Famework

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時,以驗證是否存在的文件名列表移動數據庫中的文件。

我越來越:

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

回答

1

看來,也許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(); 
相關問題