不存在 属性 或类型为动态 class 的字段
No property or field exists in type dynamic class
我正在尝试为我的报告创建动态查询。
我的查询 returns 使用 .select(selectstringquery)
和 .where(wherestringquery).
的 IEnumerable select 以及字符串根据我需要的内容和时间在不同情况下有所不同。
string selectstringquery = "student_fname, student_lname"
string wherestringquery = "student_lname='joe'";
var test = (from s in students).select(selectstringquery).where(wherestringquery); //this works well
wherestringquery = "student_isRegistered=false";
var test = (from s in students).select(selectstringquery).where(wherestringquery) //this fails coz isRegistered is a valid proerpty but not is NOT in select query.
It throws an error No property or field 'student_isRegistered' exists
in type '<>f__AnonymousType337`14'
但是如果我把 where 放在 linq
例如
(from s in students
where s_isRegistered=false).select(selectstringquery)
如何在不将列包含在 select 查询中的情况下使其工作?原因是我想在所有报告中重复使用查询,有些报告不需要该过滤器。
此外,在这种情况下,我使用
"if else "
确定 wherestringquery 是否不为空,否则我使用与上面完全相同的查询,但没有 .where(wherestringquery)。是否有可能使用 .where() 即使 wherestringquery 为空?我试着写 .where(true) 但它抛出异常。
谢谢。
您正试图在 select 通过 select 子句减少列数后应用 where 子句。只需在 selecting 列之前执行 where 例如
var test = (from s in students).where(wherestringquery).select(selectstringquery);
我正在尝试为我的报告创建动态查询。
我的查询 returns 使用 .select(selectstringquery)
和 .where(wherestringquery).
的 IEnumerable select 以及字符串根据我需要的内容和时间在不同情况下有所不同。
string selectstringquery = "student_fname, student_lname"
string wherestringquery = "student_lname='joe'";
var test = (from s in students).select(selectstringquery).where(wherestringquery); //this works well
wherestringquery = "student_isRegistered=false";
var test = (from s in students).select(selectstringquery).where(wherestringquery) //this fails coz isRegistered is a valid proerpty but not is NOT in select query.
It throws an error No property or field 'student_isRegistered' exists in type '<>f__AnonymousType337`14'
但是如果我把 where 放在 linq
例如
(from s in students
where s_isRegistered=false).select(selectstringquery)
如何在不将列包含在 select 查询中的情况下使其工作?原因是我想在所有报告中重复使用查询,有些报告不需要该过滤器。
此外,在这种情况下,我使用
"if else " 确定 wherestringquery 是否不为空,否则我使用与上面完全相同的查询,但没有 .where(wherestringquery)。是否有可能使用 .where() 即使 wherestringquery 为空?我试着写 .where(true) 但它抛出异常。
谢谢。
您正试图在 select 通过 select 子句减少列数后应用 where 子句。只需在 selecting 列之前执行 where 例如
var test = (from s in students).where(wherestringquery).select(selectstringquery);