linq - 在自定义对象上添加包含方法以使用 LINQ
问题描述
我有一个类,其属性包含 json 格式的序列化数据:
public class MyObject
{
public string SerializedData
{
get
{
...
}
set
{
...
}
}
}
该对象是实体框架数据库对象的属性:
public class MyRecord
{
public int Id { get; set; }
public MyObject Item { get; set; }
}
我现在正在尝试编写一个 LINQ 语句来检查序列化字符串是否包含我的搜索文本。我正在动态构建 LINQ 语句:
var predicate = PredicateBuilder.New<TEntity>();
var param = Expression.Parameter(typeof(TEntity), typeof(TEntity).Name);
Expression property = Expression.Property(param, type.Name);
Expression contains = Expression.Call(
property, "Contains",
null,
new[] { Expression.Constant("test") });
predicate.Or(Expression.Lambda<Func<TEntity, bool>>(contains, param));
我的对象不包含“包含”方法,所以我添加了一个:
public class MyObject
{
...
public bool Contains(string value)
{
return true;
}
}
当我的查询运行时,我收到以下错误:
LINQ to Entities 无法识别“Boolean Contains(System.String)”方法,并且该方法无法转换为存储表达式。
我不确定我是否以正确的方式处理这个问题?
有人可以帮忙吗?
谢谢
解决方案
推荐阅读
- python - 当最后一条语句中的标志变量中的值不为 0 时,程序不工作
- wordpress - 创建表单以从列表中选择服务
- json - 我只想在正则表达式中的特殊字符之后查找匹配项
- installation - CentOS Linux release 7.9.2009 安装 gd-devel 问题
- sqlalchemy - SQL Alchemy 关系未链接类
- java - Java MAXIMUM 结果,同时保持交替二进制序列(硬币翻转)问题的最小变化
- ios - CALayer 在亮/暗模式下显示错误的 SFSymbol 图像
- java - 无法在 MacOS 上的 Eclipse 上安装 JavaFX
- jquery - 如何使用 Jquery 从选项选择 onchange 中检索 id
- python - 运行令牌 Discord.py