如何将匿名类型作为参数传递给其他函数?考虑以下示例:
var query = from employee in employees select new { Name = employee.Name, Id = employee.Id }; LogEmployees(query);
query这里的变量没有强类型。我应该如何定义LogEmployees要接受的功能?
query
LogEmployees
public void LogEmployees (? list) { foreach (? item in list) { } }
换句话说,我应该使用什么代替?标记。
?
我认为您应该为此匿名类型创建一个类。我认为这将是最明智的选择。但是,如果您真的不想要,可以使用动态:
public void LogEmployees (IEnumerable<dynamic> list) { foreach (dynamic item in list) { string name = item.Name; int id = item.Id; } }
请注意,此类型 不是 强类型,因此,例如,如果Name更改为EmployeeName,则直到运行时您才知道有问题。