如何在 C# 中迭代​​数组值并更新多条记录 [关闭]

Posted

技术标签:

【中文标题】如何在 C# 中迭代​​数组值并更新多条记录 [关闭]【英文标题】:how to iterate array values and update multiple records in C# [closed] 【发布时间】:2021-02-11 06:34:14 【问题描述】:

我想根据数组值更新多条记录。 “userid”和“orderid”是用逗号分隔的数组值。我想遍历数组值并更新firestore的记录。用户 ID 和订单 ID 将具有相同的索引。有多少用户,那么多少 orderid 就会有多少。

示例 webapi

https://localhost:44308/AssignTruck/djK2BjrTTnuLSqD8LbeZ,djK2BjrTTnuLSqD8LbeZ/PdTXq6Rk0WfJK9FQV8vt,TmHhOapTNaZco4PcCF8j/S-1

userid - djK2BjrTTnuLSqD8LbeZ,djK2BjrTTnuLSqD8LbeZ
docid -  PdTXq6Rk0WfJK9FQV8vt,TmHhOapTNaZco4PcCF8j

代码

[HttpGet("/AssignTruck/userid/orderid/shipid")]
        public async Task<ActionResult> AssignTruck(string userid, string orderid, string shipid)
        
            
                FirestoreDb db = FirestoreDb.Create("trucks");
                DocumentReference docRef = db.Collection("users/" + userid + "/orders").Document(orderid);
                DocumentSnapshot snapshot = await docRef.GetSnapshotAsync();
                Truck truck = null;
                if (snapshot.Exists)
                
                    truck = snapshot.ConvertTo<Truck>();
                    truck.Docid = snapshot.Id;
                    truck.shipId = shipid;
                
                else
                
                
                await docRef.SetAsync(truck);
                return RedirectToAction("tables");
            
        

【问题讨论】:

【参考方案1】:

假设userids和orderids对应同一个index,你的代码应该如下:

    [HttpGet("/AssignTruck/userid/orderid/shipid")]
    public async Task<ActionResult> AssignTruck(string userid, string orderid, string shipid)
    
        string[] uIds= userid.Split(',');
        string[] oIds= orderid.Split(',');

        for(int i=0; i<uIds.Length(); i++)               
            FirestoreDb db = FirestoreDb.Create("trucks");
            DocumentReference docRef = db.Collection("users/" + uIds[i] + "/orders").Document(oIds[i]);
            DocumentSnapshot snapshot = await docRef.GetSnapshotAsync();
            Truck truck = null;
            if (snapshot.Exists)
            
                truck = snapshot.ConvertTo<Truck>();
                truck.Docid = snapshot.Id;
                truck.shipId = shipid;
            

            await docRef.SetAsync(truck);
            
        
        return RedirectToAction("tables");
    

【讨论】:

这无法编译(.length() 无效),如果编译成功,for 中的return 会使for 循环毫无意义 感谢您的代码@filissen。我正在尝试这段代码。 感谢@filessen,您的代码运行良好。更改请求是等待 docRef.SetAsync(truck);应该在循环之外并且 .length() 将是 Length

以上是关于如何在 C# 中迭代​​数组值并更新多条记录 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 驱动程序在 MongoDB 中更新和更新多个文档

如何使用 Jquery 获取 td 值并存储在数组中? [复制]

对选定的数组记录运行更新

在 PL/SQL 中附加来自每个循环迭代的多条记录

Oracle如何快速选择和更新一个字段值并插入记录

获取mysql中的多条记录并存入json数组中显示在HTML表格单单字段中