【发布时间】:2020-09-23 05:08:27
【问题描述】:
我想知道下面的代码将如何工作以及性能如何。我基本上对第 4 行感兴趣。 linq 和属性信息如何协同工作?
换句话说,(int)prop.GetValue(a) 和 a.SomeId 的工作方式是否相同,或者反射是否需要在检查值之前将所有内容都存储到内存中?
var prop = type.GetProperty("SomeId");
if (prop != null)
{
DbSet<T> dbSet = _dbContext.Set<T>();
return dbSet.Where(a => (int)prop.GetValue(a) == 1);
}
【问题讨论】:
-
取决于后备存储,上下文可能无法将表达式转换为底层查询语法(例如 SQL)。您可以考虑手动构建一个有效的表达式。
标签: linq .net-core reflection iqueryable