То, что вы описываете, это не представляется возможным. В случае вашего запроса Linq to Sql компилятор C# создает анонимный тип с единственным свойством Foo с тем же типом, что и t.column. Затем используется метод inferencing, и переменная «query» на самом деле строго типизирована для этого анонимного типа (что и дает вам свойство intellisense для этой переменной).
Использование «var» в качестве типа параметра невозможно, поскольку тип параметра не может быть выведен, он требует, чтобы вызывающее выражение определяло фактический тип параметра.
Самое лучшее, что вы могли бы сделать, чтобы использовать дженерики и перебирать свойства:
public static void Print<T>(T obj)
{
Type type = typeof(T);
PropertyInfo[] properties = type.GetProperties();
foreach(PropertyInfo pi in properties)
{
Console.WriteLine(pi.Name + ": " + pi.GetValue(obj, null));
}
}
, который дает вам «элементарную» способность использовать анонимные типы (или любой тип по этому вопросу) в качестве параметра ,