我有两个列表,其中一个是另一个的子集修改子集。例如:
List<string> list1 = new List<string>(){ "A1", "A2", "A3" };
List<string> list2 = new List<string>() { "AA2", "B1", "B2", "AA1", "B3", "AA2" };
我想对第二个列表进行排序,使其具有与第一个类似的顺序,如下所示:
List<string> list2 = new List<string>() { "AA1", "AA2", "AA3", "B1", "B2", "B3" };
我怎样才能做到这一点?
答案 0 :(得分:0)
假设<div id="container">
<div id="a">A</div>
<div id="b">B</div>
<div id="c">C</div>
</div>
项是list1
项的子集(子字符串),您可以使用list2
和Linq
函数执行此类操作。我不确定它是最优的,但有效。建议欢迎改进答案。
我们的想法是为相应的string
项找到list1
项的索引(如果找不到项,那么最大索引),然后根据索引List2
找到Sort
串/项目。
ThenBy
<强>输出强>
List<string> list1 = new List<string>(){ "A1", "A2", "A3" };
List<string> list2 = new List<string>() { "AA2", "B1", "B3", "AA1", "B2", "AA3" };
var results = list2.Select(s=>
{
var ind = list1.IndexOf(list1.Find(f=> s.Contains(f)));
return new
{
index= ind==-1? int.MaxValue : ind, // assign max value if item is not found to place in the end in order.
item =s
};
}).OrderBy(o=>o.index).ThenBy(o=>o.item).Select(s=>s.item);
选中此Demo