簡體   English   中英

如何使用 Linq 從數據庫中查找和刪除不匹配的記錄

[英]How to find and delete unmatched records from database using Linq

在我的數據庫中,我有一個上傳表和一個員工表。 模型類中有一個Employee類文件和一個Upload Item類文件。 我需要編輯員工信息。 員工 ID 號 1 有 2 個上傳文件。在編輯操作中,用戶刪除了一個文件(刪除了 ID 號:2 的圖像)。 模型被傳遞到后端。 后端獲取模型,需要對上傳的文件進行驗證。 上傳表有兩條記錄,員工 ID 為 1。前端代碼發送文件請求。 在這種情況下,此時,我需要檢查表中的哪個文件不匹配。 如果發現不匹配的記錄,我需要將其刪除。 例如,我需要從上傳表中刪除記錄 ID 號 2。 下面我解釋一下我的代碼。

上傳表:

ID 文件名 網址 員工ID
1 主頁.jpg C:\\home.jpg 1
2 花.jpg C:\\花.jpg 1

上傳項目模型類:

public class UploadItem()
{
    [Key]
    public int Id{get;set;}
    public string FileName {get;set;}
    public string URL {get;set;}
    public int EmployeeId {get;set;}
}

員工表:

ID 員工姓名 電話號碼
1 約瑟夫 89772
2 紅潤 3244

員工模型類:

public class Employee()
{
    [Key]
    public int Id{get;set;}
    public string EmployeeName {get;set;} 
    public int PhoneNo{get;set;}
    public List<IFormFile> files {get;set;}
    public List<UploadItem> uploadfiles {get;set;}
}

控制器類: //方法摘要:需要從上傳表中刪除不匹配的記錄。

[HTTPPOST("EditEmployee")]

public async Task<IActionResult> EditEmployee([FormFrom] Employee model)
{
    if(model.uploadfiles.Count>0)
    {
       var uploadRecordsFromDB= dbContext.Uploads.Where(x=>x.EmployeeId==model.Id).ToList();
       var uploadRecordsFromRequest=model.uploadfiles;
    //Finding unmatched records method1:
       var unMatchedRecords = uploadRecordsFromDb.Where(x=> !uploadRecordsFromRequest.Contains(x)).ToList(); 
    //Finding unmatched recordss method 2:
       var unMatchedRecords1= uploadRecordsFromDB.Where(i => !uploadRecordsFromRequest.Contains(i)).ToList();
    
    }
}

我期望的結果是

ID 文件名 網址 員工ID
1 主頁.jpg C:\\home.jpg 1

我得到了答案:

//使用linq查詢找到不匹配的記錄:

 [HTTPPOST("EditEmployee")]
    
    public async Task<IActionResult> EditEmployee([FormFrom] Employee model)
    {
        if(model.uploadfiles.Count>0)
        {
           
           var uploadRecordsFromDB= dbContext.Uploads.Where(x=>x.EmployeeId==model.Id).ToList();
    var uploadRecordsFromRequestIds=model.uploadfiles.Select(x=>x.Id).ToList();
    var unmatchrecords = (from file in uploadRecordsFromDB 
                                           where !uploadRecordsFromRequestIds.Contains(file.Id) select file).ToList();
        foreach (var unmatchrecord in unmatchrecords) 
                    {
                        dbContext.Uploads.Remove(unmatchrecord);
                        dbContext.SaveChanges();
                    }
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM