我需要使用反射从包含另一个对象的IQueryable中删除一些列(所以我不想使用匿名类型来创建没有列的新IQueryable)。
我试过了,但这不是正确的解决方案:
string[] columnsToRemove = { "Insurance" };
var myQuery = _dataService.GetQuery<Insurance>().Include(i => i.Partner);
var attributes = myQuery.GetType().GetProperties();
foreach (var attribute in attributes)
{
foreach (var column in columnsToRemove)
{
if (attribute.Name != column)
{
// Remove the column from query
var newQuery = myQuery.Where(t => t.GetType().GetProperty(column).Name != column);
return newQuery;
}
}
}
1条答案
按热度按时间fhg3lkii1#
您可以尝试使用
Select
,但您需要列出除排除的属性之外的所有属性:注意,在EF和
Select
的情况下,Include
将不起作用,因此您需要在查询中显式设置相应的属性。其他选项
ProjectTo
from queryable extensions中使用DTO和AutoMapper等工具。.Select("new(CompanyName as Name, Phone)");
)