2013-05-22 2 views
1

Considere этот кусок кода в LINQ (пожалуйста, внимание на вар list2):Получение поля, которое не принадлежит к модели

var list1 = ....... /* This linq doesnt matter. Just for clarify that it is used in the below linq */ 

var list2 = dba.OrderForm 
    .Where(q => q.OrderPriority.OrderPriorityID == orderpriorityID 
     && q.StockClass.StockClassID == stockclassID 
     && dba.AuditTrailLog.Where(log => q.OrderID == log.ObjectID) 
     .Any(log => log.ColumnInfoID == 486 
      && log.OldValue == "2" 
      && log.NewValue == "3") 
      && dba.AuditTrailLog.Where(log2 => q.OrderID == log2.ObjectID) 
      .Any(log2 => log2.ColumnInfoID == 487 
       && log2.OldValue == "1" 
       && log2.NewValue == "2") 
       && lista.Contains(q.OrderID)); 

Таким образом, я имею в list2 список записей, принадлежащих к OrderForm модели , Мне нужно, чтобы передать его на другую модель под названием ViewResult:

Что мне нужно, чтобы получить переменную log2.ModificationDate, которая принадлежит к AuditTrailLog таблице, но это не входит в OrderForm Модель

List<ViewResult> vr = new List<ViewResult>(); 

foreach (OrderForm o in list2) 
{ 
    ViewResult r = new ViewResult(); 
    r.NumOrden = o.FormNo; 
    r.Title = o.Title; 
    r.Com = o.OrderPriority.Descr; 
    r.OClass = o.StockClass.Descr; 
    r.RodT = /* <<------ Here is where I need to assign log2.ModificationDate 

    vr.Add(r);    
} 

Спасибо.

ответ

3

То, что я понимаю, это AuditTrailLog отношение равно нулю, пока вы получаете данные. И вы хотите заполнить его соответствующими данными.

Вы должны Include эту таблицу как:

(Это означает, что вы делаете join на SQL)

var list2 = dba.OrderForm.Include("AuditTrailLog")... 

Важно соотношение между ними. «Один для многих» или «много к одному». Используйте AuditTrailLog или AuditTrailLogs согласно вашему отношению.

+0

Спасибо за ваш ответ @JustWork. Извините, если я не объяснил это правильно. Связь между 'OrderForm-AuditTrailLog' не равна нулю. Мне нужно получить в 'r.RodT' дату, когда была изменена каждая запись таблицы' OrderForm' ('log2.ModificationDate' в LINQ), которая записана в таблице AuditTraiLog. – equisde

+0

Соотношение между таблицами 'OrderForm/AuditTrailLog' равно 1: N. Я использовал 'var list2 = dba.OrderForm.Include (" AuditTrailLog ")' как вы предлагали, но я не могу выполнить 'r.RodT = o.AuditTrailLog.ModificationDate' ни' r.RodT = log2.ModificationDate' – equisde

+0

Если есть ModificationDate значение в таблице AuditTrailLog, и вы не получите его равным нулю при получении данных, вам не удастся выполнить ModificationDate. У вас что-то не так. Или я понимаю, что ты совершенно неправ. Вы отлаживали его? Вы уверены, что AuditTrailLog не является нулевым? – JustWork

Смежные вопросы