[英]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.