2016-03-03 1 views
-1

У меня есть этот C# и LINQ к базе данных, чтобы получить все строки данных из базы данныхКак Foreach записи базы данных в MVC C#

var getOldAttachment = _context.ca_Attachments.Where(x => x.CaseId == getCase[0].Id && x.isDeleted == false).ToList(); 

Чем я хочу использовать Еогеасп повторно вставить точную строку данные в базу данных с обновлениями новой datacolumn, простыми словами - просто дублировать одну и ту же строку данных, но с разными значениями. строка данных содержит Id, создатель, вложение, lastupdateon. со значениями: 1, тестер, 12345,2015-11-16 11: 49: 50.810 соответственно Я просто хочу изменить значение редактора для текущего использования, который вызывает редактор. Что я могу положить в ???? часть?

if (getOldAttachment != null && getOldAttachment.Count > 0) 
       { 
        //foreach (??????) 
        //{ 
        // data.ca_Attachments.Add(new ca_Attachment 
        // { 
        //  AttachmentId = getOldAttachment.attachmentId, 
        //  creator = editor, 
        //  LastUpdatedOn = _startTime, 
        // }); 
        //} 
       } 

ответ

2

Примечание: Вам не нужно проверять null после ToList(). Он никогда не будет нулевым. Вам также не нужно проверять на Count > 0, так как мы собираемся повторить его (и он не будет выполняться, если в любом случае нет элементов).

Вы можете просто написать:

var oldAttachments = _context.ca_Attachments 
          .Where(x => x.CaseId == getCase[0].Id && !x.isDeleted) 
          .ToList(); 

foreach (var oldAttachment in oldAttachments) 
{ 
    data.ca_Attachments.Add(new ca_Attachment 
    { 
     AttachmentId = oldAttachment.attachmentId, 
     creator = editor, 
     LastUpdatedOn = _startTime, 
    }); 
} 
+0

Спасибо. Это работает :) – xSea

0
if (getOldAttachment != null && getOldAttachment.Count > 0) 
      { 
       for(var i = 0; i < getOldAttachment.Count; i++) 
       { 
        //this is how to populate the data from list 
        //sample only 
        ca_Attachment.AttachmentId = getOldAttachment[i].AttachmentId; 
        //do the insert code 
       } 
      } 
1

Вот один вариант использования ForEach:

getOldAttachment.ForEach(att => { 
    _context.ca_Attachments.Add(new ca_Attachment 
      { 
       AttachmentId = att.attachmentId, 
       creator = editor, 
       LastUpdatedOn = _startTime, 
      }); 
}); 

Это использует _context добавить новое вложение вместо data - не уверен, что это ... data

+1

Не пытайтесь быть * этим парнем *, но 'List.ForEach' не LINQ – Jonesopolis

+1

@Jonesopolis - ах, спасибо - я думал, вам нужно добавить ссылку на' System.Linq', чтобы доступ к методу 'ForEach()'. – sgeddes

+1

Кажется, что это похоже, но это всего лишь метод самого 'List' – Jonesopolis