获取列的值,该名称在运行时在Linq中生成?

时间:2018-07-16 12:28:16

标签: c# entity-framework linq edmx

我有这个查询:

(from mt in edmxObject.MyTable 
 where mt.Field1 != null 
 select mt.Field6)
.Distinct()
.ToList())

还有字段 Field2,Field3,Filed4 Field5 ,它们在本质上是相同的。它们具有整数,但也可以为空。

我想获取某些字段 Field1,Field2,...,Field5 是否具有值或它们具有空值。

如果我知道该列的名称是字符串“ FieldX”之类的字符串,该字符串位于集合(Field1,Field2,...,Field5)中,如何在运行时获取Linq查询与适当的列,然后在我的edmx模型上执行它以获得给定字段的值?

1 个答案:

答案 0 :(得分:3)

我已经更新了该句子,基本上将我在选择中使用的句子添加到了clausule中。我正在使用反射来访问属性和值。

        string fiealdName = "Field1";
        var neL = l.Where(f => f.GetType()
                                .GetProperty(fiealdName).GetValue(f, null) != null)
                   .Select(f => f.GetType()
                   .GetProperty(fiealdName).GetValue(f, null)
                   .GetValue(f, null))
                   .Distinct()
                   .ToList();