【发布时间】:2014-09-25 08:15:27
【问题描述】:
我有一个值列表,用于对另一个值列表进行排序,但我一直遇到的问题是,如果我删除 2 个要排序的值,则需要的值列表中的两个值要排序的值丢失了这两个值,因为在排序值列表中找不到它。
这是我的尝试示例
尝试 1
universites = universites.OrderBy(d => listOrderedUniversites.IndexOf(d)).ToList();
universites 是一个 List,orderedUniversity 是一个模型的列表,listOrderedUniversites 是一个 List。
然而,这确实提取了所有值,但根本没有对它们进行排序。
--- 更新---
这就是我所拥有的
universites = new List<SelectListItem>();
universites.Add( new SelectListItem()
{
Value = 1,
Test = "University 1"
});
universites.Add( new SelectListItem()
{
Value = 2,
Test = "University 2"
});
universites.Add( new SelectListItem()
{
Value = 3,
Test = "University 3"
});
ordering = new int[] {3, 1, 2};
所以我需要按 int 数组排序我的 List;
【问题讨论】:
-
您能否提供样本清单以及预期结果?您的问题目前有点不清楚,因为如果它们的长度不同,我看不出如何将一个列表按另一个列表排序,以及为什么一个列表中的项目也应该在另一个列表中。
-
什么是
d?它是University的一类吗?如果是,您是否覆盖了此类的Equals和GetHashCode? -
@Matthew 好的,可以说 orderedUniversities 是 {1,5,4,2,3} 而大学是 {1,2,3,4,5,6,7} 我想订购大学看起来像 {1,5,4,2,3,6,7},列表长度可能不同的原因是我从数据库中提取它们并且该表可以在添加值时增加,以便新的值需要添加到列表和有序列表中,否则它永远不会显示
-
如果
orderedUniversities中的条目不在universities中,应该怎么办? -
找不到该值,因此不会对其进行排序,因此该项目不会在列表中
标签: c# asp.net-mvc list