簡體   English   中英

如何根據列表的子對象屬性對列表進行排序?

[英]How do I sort a list based on its child object attributes?

我想知道是否有人可以闡明一種基於子對象的屬性對對象列表進行排序的方法。 我正在使用以下模型:

public class Content
{
    public string Id { get; set; }
    public List<ContentAttribute> Attributes { get; set; }
}

public class ContentAttribute
{
    public string Value { get; set; }
    public string Id { get; set; }
    public string Name { get; set; }
}

一些樣本數據:

[
    {
        "Id": "123",
        "Attributes": [
            {
                "Value": "abc",
                "Id": "1a",
                "Name": "name1"
            },
            {
                "Value": "ghi",
                "Id": "2b",
                "Name": "name2"
            }
        ]
    },
    {
        "Id": "456",
        "Attributes": [
            {
                "Value": "abc",
                "Id": "1a",
                "Name": "name2"
            },
            {
                "Value": "def",
                "Id": "2b",
                "Name": "name3"
            }
        ]
    },
    {
        "Id": "789",
        "Attributes": [
            {
                "Value": "abc",
                "Id": "1a",
                "Name": "name1"
            },
            {
                "Value": "def",
                "Id": "2b",
                "Name": "name2"
            }
        ]
    }
]

如何按特定屬性NameValue對Content對象排序? 例如,我想按“名稱2”的Value對以上數據進行排序,這意味着結果將是

[
    {"Id" : "456"},
    {"Id" : "789"},
    {"Id" : "123"}
]

任何幫助是極大的贊賞。 (使用c#)。

如果Attributes總是有一個名稱為name2的元素,並且您想要一個異常,則它不存在:

var sorted = contents.OrderBy(c => c.Attributes.First(a => a.Name == "name2").Value).ToList();

或者,如果name2可能丟失並且不是交易破壞者,則使用FirstOrDefault

var sorted = contents.OrderBy(c => c.Attributes.FirstOrDefault(a => a.Name == "name2")?.Value).ToList();

暫無
暫無

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

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