Передать выражение в Select linq.

Это linq-to-sql

У меня много разных классов, выполняющих один и тот же запрос, но прогнозирование результатов немного по-другому. В идеале я хотел бы иметь возможность получить запрос в одном месте и передать проекцию в метод Select. Это прекрасно работает для конкретных типов:

public void GetResults() {
    var junk = db.SiteProducts.Select(Project());
}

public Expression<Func<DbEntities.SiteProduct, string>> Project() {
    return p => p.ProductAlert;
}

Но когда я пытаюсь вернуть анонимный тип, это не удается

public void GetResults() {
    var junk = db.SiteProducts.Select(Project());
}

public Expression<Func<DbEntities.SiteProduct, TResult>> Project<TResult>() {
    return p => new { p.ProductAlert };
}

Я полностью понимаю, почему вывод универсального типа не работает во втором случае. Но есть ли какой-то трюк, кроме создания собственных выражений с нуля, который мне не хватает, чтобы заставить это работать?

14
задан Ting 20 February 2013 в 02:34
поделиться