0

我有一个包含 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

ETC...

如何在不编写 6 if 语句或使用“Select case”的情况下以优雅的方式做到这一点

4

1 回答 1

0

您必须使用反射来获得PropertyInfo基于所选字符串的值。然后在您的 LINQ 查询中使用它。不过,访问数据库可能会让人感到难过……如果不尝试的话,我不确定。您可以PropertyInfo像这样在 LINQ 查询中使用:

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;
于 2012-06-22T13:58:35.273 回答