如何排序Generic.List<>通过与1字符串比较

时间:2011-12-08 22:51:09

标签: c#

我已经填充了值的通用列表,我需要对项目进行排序,第一个值应该与查询字符串相同。是否有可能对这些值进行比较和排序,我没有成功。

更新我的问题。

例如我有Id:1,2,3,4,5,我打开Id = 5的页面,所以我需要在我的searchResult上传递4作为列表中的第一项。

这段代码对我来说工作得很好并且显示5作为第一项,但是我需要强制例如p2.ObjectId传递为字符串值,例如“4294”,并且具有此Id的对象应首先出现:

Sort(searchresult);

   static void Sort(List<CollectionsItem> list)
        {
            list.Sort((p1, p2) => string.Compare(p2.ObjectId, p1.ObjectId, true));
        }

2 个答案:

答案 0 :(得分:1)

听起来不像你想要的那样。

如果你想把X放在顶部,那就是

var item = MyList[MyList.IndexOf(Target)];
MyList.Remove(item);
MyList.Insert(item,0);

如果您希望Target位于顶部,其余位于objectid

找到它,删除它,对其余部分进行排序并将其插入零...

答案 1 :(得分:1)

听起来您想要将属性ObjectId的值作为数字而不是字符串进行比较。这是我的建议:

        static void Sort(List<CollectionsItem> list)
        {
            list.Sort((p1, p2) =>
                {
                    if (int.Parse(p1.ObjectId) == int.Parse(p2.ObjectId))
                        return 0;
                    else if (int.Parse(p2.ObjectId) > int.Parse(p1.ObjectId))
                        return 1;
                    else
                        return -1;
                });
        }