Обычно вы делаете это с помощью дженериков, например:
MapEntToObj<T>(IQueryable<T> query) {...}
Затем компилятор должен вывести T
при вызове MapEntToObj(query)
. Не совсем уверен, что вы хотите сделать внутри метода, поэтому я не могу сказать, полезно ли это ... проблема в том, что внутри MapEntToObj
вы все еще не можете назвать T
- вы также можете:
- вызов других обобщенных методов с
T
- использовать отражение на
T
, чтобы делать вещи
но кроме этого, довольно трудно манипулировать анонимными типами - не в последнюю очередь потому, что они неизменны; -p
Еще одна хитрость (когда извлекает данные) - это также передать селектор, т.е. что-то вроде:
Foo<TSource, TValue>(IEnumerable<TSource> source,
Func<TSource,string> name) {
foreach(TSource item in source) Console.WriteLine(name(item));
}
...
Foo(query, x=>x.Title);