我有一个包含6个文本NA,PO,FA,GO,VG,EX
的组合,我想对这个组合中的选定值进行Linq查询,该组合用作where子句中的字段。例如:
'if "NA" is selected :
Dim query = from t in db.table where t.NA > 0 Select t
'If "PO" is selected :
Dim query = from t in db.table where t.PO > 0 select t
等...
如何以优雅的方式做到这一点,而无需编写6 if语句或使用"选择案例"
答案 0 :(得分:0)
您必须使用反射来根据所选字符串获取PropertyInfo
。然后在LINQ查询中使用它。去数据库可能会让人感到难过,但是......如果没有尝试,我不确定。您可以在LINQ查询中使用PropertyInfo
,如下所示:
Dim selectedPropertyInfo = db.table.GetType().GetProperties().FirstOrDefault(p => p.Name == "NA")
Dim query = from t in db.table
where selectedPropertyInfo.GetValue(t, null) > 0
select t;