在LINQ LIST中选择列运行时<>

时间:2012-03-13 15:03:16

标签: c# linq

我有List<Employee> listEmployees

我想选择一些在编译时不知道的动态列,例如:

 var result = from l listEmployees
              select "" 

我尝试了listEmployees.select("Name");

但它引发了一个错误说:

  

'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,System.Func)'无法从用法中推断出来。尝试显式指定类型参数。

如何只选择在运行时确定的列?

3 个答案:

答案 0 :(得分:7)

您正在寻找Dynamic LINQ

答案 1 :(得分:1)

你可以使用动态linq,它是一个开源项目,我用它来进行真正的动态linq查询:

Article on Scott's Blog

希望有所帮助。

答案 2 :(得分:1)

这是一个非常可怕的方法

var result = from l in listEmployees
             select l.GetType().GetProperty(propertyName).GetValue(l, null);

其中propertyName是您在运行时传递的任何字符串。

当然,您可能希望在select之后将该位提取为方法并添加一些检查。