gpt4 book ai didi

c# - 如何根据子对象属性对列表进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 20:51:39 24 4
gpt4 key购买 nike

我想知道是否有人可以阐明一种方法来根据子对象的属性对对象列表进行排序。我正在使用以下模型:

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 对象进行排序?例如,我想按 'name2' 的 Value 对上述数据进行排序,意味着结果将是

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

非常感谢任何帮助。 (使用 C#)。

最佳答案

如果 Attributes 总是有一个名称为 name2 的元素,如果它不存在,您想要一个异常(exception):

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();

关于c# - 如何根据子对象属性对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54557159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com