sql server-尝试在LINQ和C#中使用扩展名为getfilename的方法



请耐心等待,我不会热衷于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();   

相关内容

  • 没有找到相关文章

最新更新