我正在尝试为报告创建动态查询。
我的查询返回使用.select(selectstringquery)
和.where(wherestringquery).
的IEnumerable。选择和字符串在差异的情况下根据我需要的时间而变化。
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.
它会抛出错误没有属性或字段' student_isRegistered'存在 在类型'<> f__AnonymousType337`14'
但如果我把它放在linq里面的地方
那就行了离。
(from s in students
where s_isRegistered=false).select(selectstringquery)
如何在不必在select查询中包含列的情况下使其工作?原因是我想在所有报告中重复使用查询,有些人不需要过滤。
此外,在这种情况下,我正在使用
" if else" 确定wherestringquery是否为空,否则我使用与上面完全相同的查询但没有 .where(wherestringquery)。是否有可能使用 .where()即使wherestringquery为空?我尝试写.where(true)但它会抛出异常。
感谢。
答案 0 :(得分:1)
您正在尝试通过select子句选择较少的列后应用where子句。只需在选择列之前执行操作,例如
var test = (from s in students).where(wherestringquery).select(selectstringquery);