在LINQ中使用Path.GetFileNameWithoutExtension方法

本文关键字:Path GetFileNameWithoutExtension 方法 LINQ | 更新日期: 2023-09-27 18:26:20

我正试图使用以下LINQ语句来获得符合某些条件的文件名:

query.First( f =>
             (f.MD5 == md5 || f.ArchiveFiles.Any(af => af.MD5 == md5))
             && Path.GetFileNameWithoutExtension(f.FileName) == f.GraphicRequest.GraphicName).FileName;

然而,我得到了以下错误:

System.String GetFileNameWithoutExtension(System.String)"不支持转换为SQL

我试图将数据表中删除了扩展名的文件名与另一个字段进行比较。例如,数据库中的文件名可能是"image1.jpg",我想将其与值为"image1"的字段进行比较。我想我可以使用Path.GetFilenameWithoutExtension方法,但LINQ似乎不是这样。

有没有其他方法可以在LINQ中实现这一点?

在LINQ中使用Path.GetFileNameWithoutExtension方法

您必须在内存中执行此操作,首先从数据库中获取记录,然后应用所需的函数:

query.AsEnumerable().First(...);

顺便说一句,您可能想使用FirstOrDefault,因为如果找不到记录,这将引发异常。