[英]How to write a LINQ query that will return list of entities whose ID is included in specific list?
我有一個用戶列表。
用戶.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列表中的用戶?
聽起來您需要Contains
方法: var obsoleteEntities = Users.Where(x => toBeDeleted.Contains(x.Id)).ToList();
var obsoleteEntities = Users.Where(x => toBeDeleted.Contains(x.Id)).ToList();
或者
var obsoleteEntities = Users.Where(x => toBeDeleted.Any(tbd=>tbd==x.Id)).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.