【问题标题】:How to foreach a database record in MVC C#如何在 MVC C# 中获取数据库记录
【发布时间】:2016-03-03 02:34:42
【问题描述】:

我有这个 C# 和 linq to database 从数据库中获取所有数据行

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

我想使用 foreach 将确切的数据行重新插入数据库并更新新数据列,简单来说就是复制相同的数据行但具有不同的值。数据行包含Id、creator、attachmentid、lastupdateon。值分别为:1, tester, 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,
                    //    });
                    //}
                }

【问题讨论】:

    标签: c# mysql linq foreach


    【解决方案1】:

    注意:您无需在ToList() 之后检查null。它永远不会为空。您也不需要检查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,
        });
    }
    

    【讨论】:

      【解决方案2】:

      这是使用ForEach的一个选项:

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

      这使用_context 添加新附件而不是data -- 不确定data 是什么...

      【讨论】:

      • 不想成为那个人,但List.ForEach不是LINQ
      • @Jonesopolis -- 啊,谢谢 -- 我以为你必须添加对 System.Linq 的引用才能访问 ForEach() 方法。
      • 看起来确实像,但它只是List本身的一种方法
      • @Jonesopolis -- 你是绝对正确的 -- 编辑并再次感谢:msdn.microsoft.com/en-us/library/bwabdf9z(v=vs.110).aspx
      【解决方案3】:
      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
                    }
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-30
        • 2011-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多