我有自定义对象类型List<T> ListT
的列表<T>
。
现在列表中有两个项目,一个位于ID = 1089
,另一个位于ID = 1090
基于某些逻辑,我将使用以下方式对ListT
进行排序:
ListT = ListT.OrderByDescending(x=>x.Order.HasValue).ThenBy(x=>x.Order).ToList();
完成上述查询后,ListT
现在将ID = 1090
作为第一项,将ID = 1089
作为第二项。
现在我将从数据库中检索另一个新列表ListB
。样本数据如下:
我的目标是重新排列ListB
,以便ID
中ListB
的顺序遵循ID
中ListT
的顺序,然后重新排列ListB
以便按升序排列Order
值。
最后,预期结果应为:
答案 0 :(得分:2)
或许这样的事情:
public class Foo {
public int ID { get; set; }
public int? Order { get; set; }
public Foo(int id, int? order) {
ID = id;
Order = order;
}
}
static void Main(string[] args) {
var ListT = new List<int> {1090,1089};
var ListTOrder = ListT.Select((x, index) => new { Item = x, Index = index }).ToDictionary(x => x.Item, x => x.Index);
List<Foo> ListB = new List<Foo> {
new Foo(1089, 1),
new Foo(1089, 3),
new Foo(1089, 4),
new Foo(1089, null),
new Foo(1090, 1),
new Foo(1090, 3),
new Foo(1090, 4)
};
ListB = ListB.OrderBy(x => ListTOrder[x.ID]).ThenBy(x => x.Order).ToList();
}