我必须按一个值对给定列表进行排序,该值可能会或可能不会在每个元素的另一个列表中给出。如果没有给出值,这个元素应该出现在排序列表的底部。
这是一个简短的示例:我想Items
根据名称Value
对列表进行排序Property
foo
public class Item {
public string Name { get; set; }
public List<Property> Properties { get; set; }
}
public class Property {
public string Name { get; set; }
public int Value { get; set; }
}
List<Item> items = new List<Item>() {
new Item() {
Name = "Item 1",
Properties = new List<Property>() {
new Property {
Name = "foo",
Value = 5
},
new Property {
Name = "bar",
Value = 7
}
}
},
new Item() {
Name = "Item 2",
Properties = new List<Property>() {
new Property {
Name = "bar",
Value = 2
}
}
},
new Item() {
Name = "Item 3",
Properties = new List<Property>() {
new Property {
Name = "foo",
Value = 1
}
}
}
排序后的列表应包含Item
s 的顺序Item 1
, Item 3
,Item 2
我试过这个:
items.FetchOrderBy
(
x => x.Properties
.FirstOrDefault
(
y => y.Name = "foo"
)
.Value
)
.ToList();
...但有以下异常:Antlr.Runtime.NoViableAltException