簡體   English   中英

如何編寫一個 LINQ 查詢,該查詢將返回其 ID 包含在特定列表中的實體列表?

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

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