sql server-尝试在LINQ和C#中使用扩展名为getfilename的方法
本文关键字:扩展名 getfilename 方法 server- LINQ sql | 更新日期: 2023-09-27 17:59:26
请耐心等待,我不会热衷于LINQ,更不会热衷于C#,但我有以下语句让我头疼:
myList = myClass.Where(f => f.OrigiFilename == origiFilename).ToList();
它目前运行良好,但需要更改。
我理解where子句返回文件名的结果集,我们将把它们与变量进行比较
origiFilename
所以我们本质上是这样比较的:file1.text==file1,file2.doc==file1和file3.pdf==file1
然而,我们必须忽略返回的文件扩展名
f.OrigiFilename
理想情况下,我想使用不带扩展名的Get File Name,但我似乎无法在LINQ中做到这一点,也无法切换到C#来完成这一操作,然后再返回。
任何LINQ专家都必须这样做吗?
我确实有一个变通办法,就是把很多东西添加到列表中,然后在列表中移动,再次使用C#删除每个东西,但这并不理想,我希望在一句话中完成所有这些。。。
你是这个意思吗?
myClass
.Where(f => Path.GetFileNameWithoutExtension(f.OrigiFilename) == origiFilename)
.ToList();
不幸的是,如果您想将查询保留在数据库端,没有一种简单的方法可以跳回C#,但是,您可以执行以下操作,这些操作应该可以转换为不错的SQL查询,尽管存在一些差异,如果文件名上有多个扩展名,则会失败:
myList = myClass.Where(f => f.OrigiFilename.StartsWith(origiFilename+".")).ToList();
Path
类包含一个可以使用的GetFileNameWithoutExtension()
方法:
myList = myClass
.Where(f => Path.GetFileNameWithoutExtension(f.OrigiFilename) == origiFilename)
.ToList();