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?
...全文
304 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吧。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的风光储能微电网日前经济调度模型,创新性地引入需求响应机制,以实现系统运行成本最小化为目标。该模型综合考虑风力发电、光伏发电、储能系统及可调节负荷的运行特性,构建了包含电力供需平衡、设备出力能力、储能容量约束在内的完整数学模型,并通过Python编程实现PSO算法求解,有效提升了新能源消纳水平并降低了购电成本与运行费用。研究不仅实现了多能源协调优化调度,还为高比例可再生能源接入背景下的微电网经济运行提供了可行的技术路径。; 适合人群:具备一定电力系统基础知识和Python编程能力的科研人员、研究生及从事新能源微电网优化调度相关工作的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源的微电网经济调度问题;②掌握粒子群算法在电力系统优化中的建模与应用方法;③开展计及需求响应的多能源协同调度仿真分析,探索用户侧灵活性资源参与系统优化的潜力。; 阅读建议:建议读者结合提供的Python代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及PSO参数设置,可进一步拓展至其他智能优化算法对比分析,或引入碳排放、电压稳定性等多目标优化维度进行深化研究。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 修改自己电脑的OEM信息及产品ID 本文主要讲述了如何修改自己电脑的OEM信息及产品ID,以拥有一个跟正版一样的显示效果。 文章共分为两种方法介绍了如何修改OEM信息,分别是通过软件进行修改和手动修改注册表信息。 方法一:通过软件进行修改 软件可以帮助用户快速地修改OEM信息,使用非常简单,只要选择想要修改到的厂商就可以了。 然后在高级选项中选择是否要在开始菜单中显示OEM图标和厂商信息。 通过以上步骤,用户的电脑就能拥有一个跟OEM版本一样的信息了! 方法二:手动修改注册表信息 手动修改注册表信息需要用户具备一定的计算机知识和技能。 用户需要上网搜索一张OEM logo或者从另外一台电脑上复制一张logo到自己的电脑上。 然后,用户需要找一个图标文件命名为 OEMLINKICON.ICO,作为支持信息之前的那个小图标。 接下来,用户需要修改个人信息,打开注册表编辑器,搜索到“RegisteredOwner”和“RegisteredOrganization”,这两样分别指注册者姓名和注册者单位,修改成自己的就可以了。 然后,用户需要制作“厂商、电脑型号”和“技术支持信息”(如果你的电脑有的话)。 新建一个文本文档,输入[Version]Microsoft Windows Whistler EditionWinVer=5.01[General]Manufacturer=xx(厂商)有限公司Model=xx 系列电脑[Support Information],这是“技术支持信息”的内容。 Line1=""Line2=""Line3=""Li...

8,492

社区成员

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

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