我在使用带有lastindex的子字符串时遇到一个异常, 例外如下:
LINQ to Entities无法识别方法'Int32 LastIndexOf(System.String)'方法,并且此方法无法转换为商店表达式
我的db存储文件名格式就像这个C:\ Data \ MyFileName.xml 我正在传递文件的名称以找出具体的记录
filename = MyFileName.xml
var record = (from fd in db.Details
where (fd.FullName.Substring(fd.FileName.LastIndexOf("\\") + 1)) == fileName
select fd).First();
答案 0 :(得分:2)
不幸的是,LastIndexOf
method is not mapped in LINQ to Entities。
但是,我认为EndsWith
可以适用于您的情况:
where fd.FileName.EndsWith(fileName)
或为了使其更好,请将fileName
与@"\"
:
where fd.FileName.EndsWith(@"\" + fileName)
答案 1 :(得分:0)
根据我的经验,我知道某些C#函数无法在Linq查询中使用,即使它们出现在您的编辑器中也是如此。我相信原因是它被转换为SQL,但没有办法实现它们。我会尝试选择整个名称(第一个),然后在查询后执行子字符串函数。