2013-11-18 5 views
-3
var trainingclasses = this.trainingClassRepository.GetAllclassSession().Include(x => x.Trainer).Include(x => x.TrainingRoom).Include(x => x.Session).Where(x => x.ClassId == id); 
foreach (var tclass in trainingclasses) 
{ 
    double roomcost = trainingclasses.Select(x => x.TrainingRoom.CostPerHour).FirstOrDefault(); 
    double trainercost = trainingclasses.Select(x => x.Trainer.Cost).FirstOrDefault(); 
    double duration = trainingclasses.Select(x => x.Session.Duration).FirstOrDefault(); 
} 

В вышеприведенном коде первая запись последовательности всегда извлекается. Может кто-нибудь помочь с этим.Первая запись последовательности всегда выборка?

+0

Не понятно, что вы хотите? – Satpal

+1

Но это именно то, что вы говорите с помощью 'FirstOrDefault'. Что вы ожидаете от результата? – germi

+0

Что такое ваш точный вопрос ???? Вы получаете только первую запись или хотите получить первую запись? –

ответ

1

Не используйте свою коллекцию в foreach, вы итерируете по списку, чтобы вы могли получать данные из tclass не из trainingClasses. Только первый элемент был неправдоподобным, потому что вы использовали FirstOrDefault

Изменение этого кода

foreach (var tclass in trainingclasses) 
{ 
    double roomcost = tclass.TrainingRoom.CostPerHour; 
    double trainercost = tclass.Trainer.Cost; 
    double duration = tclass.Session.Duration; 
} 
+0

Привет, спасибо, что он работает. Вообще-то я забыл использовать tclass. – karthik

0

Его не ясно,

Изменить код в

double roomcost = tclass.TrainingRoom.CostPerHour; 

вместо

double roomcost = trainingclasses.Select(x => x.TrainingRoom.CostPerHour).FirstOrDefault(); 
0

Звонок .ToList() для материализации для вашей коллекции

var trainingclasses = this.trainingClassRepository.GetAllclassSession().Include(x => x.Trainer).Include(x => x.TrainingRoom).Include(x => x.Session).Where(x => x.ClassId == id).ToList(); 
Смежные вопросы