我有一個用戶串列。
用戶.cs
public Guid Id { get; set; }
public bool isActiveUser { get; set; }
我想創建一個將接收 Id 串列的方法。并基于此,它將從資料庫中的用戶表中創建/更新/洗掉資料。
如果我在資料庫中有 3 個 ID 為 {1、2、3} 的用戶記錄
我的方法接收 List userIds = {2, 3, 5}。
結果應該是,在 DB 中,用戶表應該有 2、3、5。所以,“1”將被洗掉,2 和 3 將被更新(為簡單起見,不提如何),“5”將被添加。
我像這樣采用這 3 種型別的 id:
var existingUserIds = existingsUsers.Select(x=>x.Id).ToList();
var toBeDeleted = existingsUsers.Except(userIdsFromParameters).ToList();
var toBeUpdated = existingUsers.Intersect(userIdsFromParameters).ToList();
var toBeAdded = userIdsFromParameters.Except(existingUsers).ToList();
//洗掉操作
foreach (var id in toBeDeleted)
{
var obsoleteEntities = Users.Where(x => x.Id== id).ToList();
if (obsoleteEntities != null)
{
Users.RemoveRange(obsoleteEntities);
}
}
這似乎是很多操作。更新也是如此。
有沒有辦法撰寫一個 LINQ 查詢,它會給我所有 ID 包含在toBeDeleted串列中的用戶?
uj5u.com熱心網友回復:
var obsoleteEntities = Users.Where(x => toBeDeleted.Contains(x.Id)).ToList();
或者
var obsoleteEntities = Users.Where(x => toBeDeleted.Any(tbd=>tbd==x.Id)).ToList();
uj5u.com熱心網友回復:
聽起來你需要這個Contains方法:
var obsoleteEntities = Users.Where(x => toBeDeleted.Contains(x.Id)).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/494195.html
