LINQ to 实体无法识别方法'Char get_Chars(Int32)'方法,并且此方法无法转换为存储表达式



我只想从字符串eventTriggers(看起来像这样:"00100010")中选择字段为"1"的记录

我已经试过了,并且成功地打了1个以上的电话。。但我怀疑它的有效性。基本上我想要这样的东西。。。但LINQ显然不支持这一点
(LINQ to Entities does not recognize the method 'Char get_Chars(Int32)' method, and this method cannot be translated into a store expression.)

using (var service = new dB.Business.Service.BaseBusinessService<memo>())
{
List<memo> result = service.Repository.GetQuery().Where(p => p.ID == ID && p.eventTriggers[index] == '1').ToList();
}

有什么关于正确解决方案的提示吗?非常感谢。

我也遇到了同样的问题,并用子字符串解决了它。

ervice.Repository.GetQuery().Where(p => p.ID == ID && p.eventTriggers.Substring(index,1) == "1").ToList();

EF无法将char数组操作转换为有效查询。怎么样

IEnumerable<Memo> memos
using (var service = new dB.Business.Service.BaseBusinessService<Memo>())
{
memos = service.Repository.GetQuery()
.Where(p => p.ID == ID).AsEnumerable();
}
var result = memos.Where(m => m.eventTriggers[index] == '1').ToList();

这会在本地获取具有匹配ID的所有备忘录,然后在eventTriggers数组上进行筛选。


或者,您可以将eventTriggers转换为数值并使用位掩码,这可能是一个更快的查询。

林看起来像这样,

using (var service = new dB.Business.Service.BaseBusinessService<Memo>())
{
result = service.Repository.GetQuery()
.Where(p => 
p.ID == ID
&&
m.eventTriggers & mask != 0).ToList();
}

已解决:

using (var service = new dB.Business.Service.BaseBusinessService<memo>())
{
List<memo> result = service.Repository.GetQuery().Where(p => p.ID == ID && p.eventTriggers.Contains('1')).ToList();
}

最新更新