Это вызывает исключение, потому что вы пытаетесь использовать visits
, а не потому, что вы вызываете sum (). Может помочь, если вы включили часть кода, в которой создаете список посещений ...
Откуда это взялось, и можно ли его запросить в этом же утверждении?
Так что что-то вроде этого будет работать:
Context...Select(bc => new MacroPaymentValue()
{
//stuff
ValueForPayment = bc.visits.sum(...)
});
Фактически, я заметил, что в конце этого запроса вы заставляете его использовать ToArray (). Если вы делаете то же самое с запросом посещений, он превращает запрос в локальную последовательность. Просто избавившись от части ToArray () в запросе посещений, вы получите IQueryable, который можно использовать в других запросах linq.
Поэтому, если посещения действительно должны происходить за пределами TblCodeType, вы можете просто убедиться, что не используете ToArray ().
По сути, вы не можете использовать локальный массив в запросе linq to sql (по большей части). Однако вы можете использовать другой запрос в запросе linq to sql. Если вы вызываете ToArray () или ToList (), он фактически выполнит запрос, получит результаты и сохранит их в локальной последовательности (массив или список, в зависимости от того, что вы вызываете.) Если вы НЕ сделаете этого, однако запрос не запускается, пока вы не начнете использовать значения. Таким образом, запрос останется запросом и его можно будет безопасно использовать в других запросах.
person
CodeRedick
schedule
09.11.2012