Скажем, у меня есть эта модель представления:
public class SeriesLinkViewModel
{
public static Expression<Func<Series, SeriesLinkViewModel>> FromSeries =
s => new SeriesLinkViewModel
{
Name = s.Name,
Slug = s.Slug,
};
public string Name { get; set; }
public string Slug { get; set; }
}
Я вставил туда функцию проекции для удобства, так что теперь я могу сказать что-то вроде:
var links = dc.Series.Select(SeriesLinkViewModel.FromSeries);
Потрясающий. Но что мне делать, если я хочу добавить к этому запросу? Скажем, я хотел также извлечь столбец Description
из таблицы. Обычно я мог бы просто сделать select new { }
и поместить туда Description
, но я не могу этого сделать, потому что я могу поместить только одну проекционную функцию в `.Select() .
Я надеялся, что смогу сделать что-то вроде этого:
q = from s in dc.Series
select new
{
Series = SeriesLinkViewModel.FromSeries.Compile()(s),
Description = s.Description
};
Но я получаю исключение:
System.InvalidCastException: невозможно привести объект типа «System.Linq.Expressions.FieldExpression» к типу «System.Linq.Expressions.LambdaExpression».
Или я мог бы, по крайней мере, сделать все эти запросы за один раз? Я знаю, что TransactionScope работает для внесения изменений, но я не думаю, что это заставляет запросы выполняться сразу.
Description
в столбецSeriesLinkViewModel
или не создать новый класс ViewModel, включающийDescription
? - person Steven   schedule 15.11.2010