我只想从字符串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();
}