如何比较两个属性然后排序

时间:2016-06-10 14:55:30

标签: c# list

我有一个字符串列表,以便我手动设置"1" "2" "5" "4" "3"等。我还有另一个类绑定到许多元素,其中包含各种属性,其中一个是int {{1} }

如何根据我的字符串列表重新排列对象的顺序。

OrderString

还有一个项目列表,其中包含名称,编号,日期等属性。

假设l_Item继承自Products

  

var SortedMan =   l_Item.OrderBy(O => o.number.ToString())的CompareTo(L_string)))。   类似的东西,但实际的工作代码。

所以基本上两者中的项目数量都是相同的。我需要它按照它们在L_string中的顺序重新排列项目列表。

3 个答案:

答案 0 :(得分:0)

假设I_Item是List< Product>:

var sortedList = new List<Product>();
foreach (var value in L_string)
{
    sortedList.AddRange(I_Item.Where(x => x.number.ToString() == value));
}

答案 1 :(得分:0)

您可以使用this GenericComparer class实施。

使用像这样的东西

Array.Sort(YourArray, new GenericComparer());

或使用

Array.Sort(YourArray, new PropertyDescriptorComparer());

为了类的属性。

答案 2 :(得分:0)

假设L_string中的条目实际上对应于l_item中的项,您可以这样做:

var sorted = l_item
    .Where(item => L_string.Contains(item.number.ToString()))
    .OrderBy(item => L_string.IndexOf(item.number.ToString()));

Where方法过滤集合并返回包含所有匹配元素的新集合。 OrderBy根据L_string集合中项目的索引重新排序集合。