用组合文本替换linq where子句中的字段名

时间:2012-06-22 13:50:06

标签: vb.net linq linq-to-sql

我有一个包含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语句或使用"选择案例"

1 个答案:

答案 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;