参考this post,不幸的是我再次遇到了一些问题。
实际上,并非所有实体都包含相同的公共属性,但是我需要继承/实现我的接口,因此,在某人的情况下,属性只是声明性的,否则对于其他情况。
问题在于:
public static IQueryable<T> Create<T>(ObjectContext context)
where T : class, IEntity
{
var query = context.CreateObjectSet<T>().AsQueryable();
return query.Where(x => x.CommonProperties == "some value"); // problem here!!
}
实际上,如果我的实体(文档)都不包含公共属性或其中任何一个,则最终查询将不可浏览,并且将生成异常。
我尝试使用以下代码段但没有成功:
System.Reflection.PropertyInfo p = query.ElementType.GetProperty("common1");
if (p != null) query = query.Where(x => x.common1 == "value.."); // problem here!!
在这种情况下,p
变量永远不会null
,因此我的查询将失败...
请帮帮我..
答案 0 :(得分:1)
ParameterExpression itemParameter = Expression.Parameter(typeof(T));
return query.Where(Expresion.Equal(Expression.Property(itemParameter, "COMMONPROP_NAME"), Expression.Constant("VALUE")));