簡體   English   中英

如何從通用列表中的每個對象中刪除特定項目

[英]How to Remove Specific Item from each Object in Generic List

背景

我有一個通用對象列表。 每個通用對象都有一個需要刪除的特定字段。

我這樣創建列表。

list = new List<Object>();
list = JsonConvert.DeserializeObject<List<T>>(OutJson, new BooleanJsonConverter());

但是我需要從該列表中的每個對象中刪除一個項目。 但是我不知道列表中有多少個對象。 我確實知道,總會有一個字段需要刪除。

偽碼

我認為我需要做這樣的事情,但是要以一種通用的方式。

    //Loop through list objects, and for each object, loop through its 
    //properties. If any of the properties match a string, remove 
    //that property from the object.  

                foreach (var object in list)
                {
                    foreach (var item in object)
                    {
                        if(item.ToUpper() == "SpecificKey")
                        {
                            list.Remove(item);

                        }
                    }

                }

如何遍歷列表中的通用對象並刪除特定的項目(如果存在)?

我認為要完成此操作,最好將對象標記為動態對象。

這樣就可以了。

List<dynamic> list = JsonConvert.DeserializeObject<List<T>>(OutJson, new BooleanJsonConverter());

list.RemoveAll(x=>x["SpecificKey"]!=null);

我有一個通用對象列表。 每個通用對象都有一個需要刪除的特定字段。

如果您嘗試訪問異議上的特定屬性,則可以使用反射。 在這里查看答案:

使用C#中的反射從字符串獲取屬性值

然后,我需要從該列表中的每個對象中刪除一個項目。 但是我不知道列表中有多少個對象。 我確實知道,總會有一個字段需要刪除。

您的偽代碼是令人困惑的代碼,但似乎您只是想從父對象中刪除子對象。 如果是這種情況,並且子對象是一個復雜對象,則將其設置為null

如果要說的是需要列表中包含包含具有指定屬性名稱的屬性的任何對象,那么您應該知道當使用foreach遍歷列表時,無法從列表中刪除項目。 在這里查看答案:

C#列表-循環/迭代時刪除項目

暫無
暫無

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

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