我可以在Linq查询中使用.Contains()吗?

时间:2014-06-04 15:54:11

标签: linq

我有这个查询,我想知道.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路径,所以我无法使用“==”在哪里。

任何建议都赞赏!

1 个答案:

答案 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,这可能会引发异常。

相关问题