Это хорошее начало. Помня идея, что ViewModel будет содержать все данные, необходимые представлению. Сделайте его большим или меньшим, чем нужно.
если вы будете отображать список Show, вам может потребоваться изменить его на что-то вроде:
public List<Show> {get; private set;}
если в данном объекте вы используете только одно свойство. Не беспокойтесь о создании свойства ViewData вместо использования всего объекта. Итак, пример:
public class Venue
{
public string Name;
public string State;
public string City;
public int Capacity;
...
}
Допустим, для данной модели ViewModel вам нужно только название объекта. Не нужно добавлять к нему все Место проведения, просто добавьте свойство VenuName.
A блог с хорошим объяснением.
EDIT
Здесь - несколько хороших примеров использования System.Data.Linq.SqlClient.SqlMethods , в частности, DATEDIFF. Вы могли бы сделать что-то вроде этого:
where SqlMethods.DateDiffMonth(Book.EntryDate, DateTime.Now) <= 3 order by dates.startDate
РЕДАКТИРОВАТЬ 2
Попробуйте что-то вроде этого:
Пара указателей, обратите внимание на ViewModelProduction () , вы должны поставить (), чтобы указать, что вы создаете новые объекты. ToList () предназначен для преобразования IEnumerable, который возвращает LINQ. Также в этом случае я использую orderby на startDate. Посмотрите LINQ примеров . И это очень полезный инструмент: LinqPad .
var query = (from p in db.Production
join r in _db.Run on p.show equals r.show
orderby r.startDate
select new ViewModelProduction()
{
show = p.show,
venue = r.venue,
startDate = r.startDate,
endDate = r.endDate,
director = p.director,
designer = p.director
}).ToList();