我有这个查询,我想知道.contains()方法是否应该工作。 我已经看到了使用字符串数组但没有使用2个字符串的示例。
var FolderId = (from f in db.Folders
where Path.GetDirectoryName(filePath.ToString()).Contains(f.FolderPath.ToString())
select f.FolderId).FirstOrDefault();
文件路径包含其文件夹的路径。
我想使用.Contains()的原因是因为filePath变量来自的文件可能位于子文件夹中,因此filePaths文件夹不等于Folder路径,所以我无法使用“==”在哪里。
任何建议都赞赏!
答案 0 :(得分:0)
您可以在LINQ查询中使用Contains
,它将被转换为下层数据源语言,例如SQL。
但是您的方法调用Path.GetDirectoryName
在翻译时会遇到问题。因此,首先将其解压缩,然后在查询中使用它:
string directoryName= Path.GetDirectoryName(filePath.ToString());
var FolderId = (from f in db.Folders
where directoryName.Contains(f.FolderPath)
select f.FolderId).FirstOrDefault();
另外,请确保不要在LINQ查询中使用ToString
,这可能会引发异常。