Linq to Sqlite 的indexof

KevinListening 2013-07-31 11:48:31
使用sqlite的linq:
var reachTable=db.TableName.where(p=>p.StrField.indexof("123")>=0);
这样失败,但是使用contains成功:
var reachTable=db.TableName.where(p=>p.StrField.contains("123");

难道linq to Sqlite不能使用indexof?
...全文
246 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
KevinListening 2013-08-02
  • 打赏
  • 举报
回复
哈哈,终于想到了一个方法,代替indexof: //var reachTable = db.TpRoperty.Where(p=>p.Link==link&&p.Value.Contains(inputText)); int inputLength = inputText.Count(); var reachTable = db.TpRoperty.Where(p => (p.Link == link) &&(p.Value.Substring(0,inputLength)==inputText)); foreach (var reachField in reachTable) { resultTip.Add(reachField.Value.ToString()); } 这样就没问题了!很爽!
KevinListening 2013-08-02
  • 打赏
  • 举报
回复
LINQ to Entities does not recognize the method 'Int32 IndexOf(System.String, Int32)' method, and this method cannot be translated into a store expression. You can't use .NET functions in LINQ to Entities its because of security, e.g. IndexOf() may do lot of other things than just checking the string.
KevinListening 2013-08-02
  • 打赏
  • 举报
回复
对,我曾经想做一下判断: if(reachTable!=null&&reachTable.Count()>0) { ... } 结果错误就出现在:reachTable.Count()上,同样的错误。说明这里获取indexof就是失败的。 所以我想结论应该就是这里无法使用indexof,希望SQLite最新的SQLite-1.0.88在8月份出来能解决吧。 过两天如果没有解决,就结贴了。我的结贴率竟然不是100%,估计是有时候忘记了。。。
fjsnail 2013-08-01
  • 打赏
  • 举报
回复
indexof返回的是第一个符合条件数据序号。。。。
KevinListening 2013-08-01
  • 打赏
  • 举报
回复
报错: foreach (var reachField in reachTable) { resultTip.Add(reachField.Value.ToString()); } 在这个reachTable上显示: SQLite error no such function: STRPOS
EnForGrass 2013-08-01
  • 打赏
  • 举报
回复
引用 6 楼 listening 的回复:
报错: foreach (var reachField in reachTable) { resultTip.Add(reachField.Value.ToString()); } 在这个reachTable上显示: SQLite error no such function: STRPOS
先输出reachTable.ToList().Count()看看有没有值
KevinListening 2013-07-31
  • 打赏
  • 举报
回复
太晚了,我要睡觉了,报错的信息明天在调出来吧。总之是在下一步调用: foreach (var reachField in reachTable) { resultTip.Add(reachField.Value.ToString()); } 出现reachTable错误,无法访问 reachTable。
KevinListening 2013-07-31
  • 打赏
  • 举报
回复
Linq to Sql在SqlServer上当然支持indexof的。而且在sqlite的linq里面直接就有indoxof的提示9种参数调用方式: var reachTable = db.TpRoperty.Where(p=>p.Link==link&&p.Value.Contains(inputText)); var reachTable1 = db.TpRoperty.Where(p => p.Link == link && p.Value.IndexOf(inputText)>=0);
EnForGrass 2013-07-31
  • 打赏
  • 举报
回复
linq to sql应该支持,sqlite没玩过,不大清楚 失败,报什么错误??
threenewbee 2013-07-31
  • 打赏
  • 举报
回复
linq to sql也不支持indexof吧。

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧