C# 用于运行时列投影的动态LINQ
我正在尝试为所选列实现动态LINQ查询,以显示LINQ查询中的输出列。 以下是错误: /未为类型定义属性“System.String CompanyCode” “System.String”C# 用于运行时列投影的动态LINQ,c#,linq,C#,Linq,我正在尝试为所选列实现动态LINQ查询,以显示LINQ查询中的输出列。 以下是错误: /未为类型定义属性“System.String CompanyCode” “System.String” 有人能帮我解决上述错误吗?如果我们看一下以下代码: // I chnaged this part: string[] props = new string[] { "AccountingDocumentNbr", "CompanyCode",
有人能帮我解决上述错误吗?如果我们看一下以下代码:
// I chnaged this part:
string[] props = new string[]
{
"AccountingDocumentNbr",
"CompanyCode",
"FiscalYearNbr"
};
Expression expr;
Type type = entity.ElementType;
foreach (string prop in props)
{
PropertyInfo pi = type.GetProperty(prop);
expr = Expression.Property(expr, pi);
type = pi.PropertyType; // This line may cause your loop
// to do something you dont want to do?
}
在我看来,你的循环遍历属性,得到一个字符串,然后搜索一个名为CompanyCode的prop,这个类字符串显然没有
您的循环此时执行以下操作:
从类型获取名为AccountingDocumentNbr的属性
从属性AccountingDocumentNbr的返回类型获取名为CompanyCode的属性
从属性CompanyCode的返回类型获取名为FiscalYearNbr的属性类型
我毫不怀疑这就是您真正想要做的。运行时的变量类型是什么?在您分配pi.PropertyType之前。在我看来,您获取属性类型的循环并没有完成您想要的操作。您好,我想添加字符串列名,它具有来自LINQ查询的投影列。我正在尝试从目标获取属性假设我用目标对象替换类型,即类型type=entity.ElementType;即使我试图注释掉type=pi.PropertyType;仍然会得到相同的错误..请注释掉for循环中的最后一个stmt,看看你是否能进一步了解它
// I chnaged this part:
string[] props = new string[]
{
"AccountingDocumentNbr",
"CompanyCode",
"FiscalYearNbr"
};
Expression expr;
Type type = entity.ElementType;
foreach (string prop in props)
{
PropertyInfo pi = type.GetProperty(prop);
expr = Expression.Property(expr, pi);
type = pi.PropertyType; // This line may cause your loop
// to do something you dont want to do?
}