Кто сказал, что var нельзя возвращать из методов в C# 3?
Маленький хак для тех, кто переживает по поводу невозможности возврата переменных типа var из методов в C# 3. Действует безотказно, хотя и имеет смысл применять его только при биндинге или в безвыходных ситуациях 
Итак имеем какой-то DAL/BLL метод, возвращающий набор данных, который мы потом используем в биндинге. Берем Linq в руки и пишем
public var GetData() {
return from t in db.Table1 select new {t.Field1, t.FIeld2};
}
и естесственно получаем при компиляции ашипку. Но мы то биндинг делаем, а там есть всякие Eval-ы, которым на момент компиляции и не нужна информация о том, что там в классе и как. Поэтому легким движением руки меняем объявление public var GetData() на public object GetData() и, о чудо, присвоив DataSource-у какого-нить биндинг контрола результат вызова этого метода все у нас чудесно начинает работать.
Но и это еще не все. А что делать, скажем, если нужно работать с данными внутри ItemDataBound/RowDataBound событий соотв. контролов? Как тогда поступать? И тут у нас есть чем помочь, стоит только вспомнить о существованиии класса DataBinder и его волшебного метода Eval()
И можно написать примерно такую конструкцию:
protected
override
void
listDataBound(
object
sender, System.Web.UI.WebControls.
RepeaterItemEventArgs
e)
{
if
(e.Item.DataItem !=
null
)
(e.Item.FindControl(
"litField1"
)
as
Literal
).Text =
DataBinder
.Eval(e.Item.DataItem,
"Field1"
).ToString();
}
protected
override
void
listDataBound(
object
sender, System.Web.UI.WebControls.
RepeaterItemEventArgs
e)
{
if
(e.Item.DataItem !=
null
)
(e.Item.FindControl(
"litField1"
)
as
Literal
).Text =
DataBinder
.Eval(e.Item.DataItem,
"Field1"
).ToString();
}
И, наконец, для полного изврата напишу ка я еще вот такую конструкцию:
string
a =
""
;
foreach
(
object
o
in
GetData()
as
IEnumerable
)
a +=
DataBinder
.Eval(o,
"Field1"
).ToString();
string
a =
""
;
foreach
(
object
o
in
GetData()
as
IEnumerable
)
a +=
DataBinder
.Eval(o,
"Field1"
).ToString();
.NET 1 в связке с C# 3 дает чудесные результаты