我的代码如下:
Collection<NameValueCollection> optionInfoCollection = ....
List<NameValueCollection> optionInfoList = new List<NameValueCollection>();
optionInfoList = optionInfoCollection.ToList();
if(_isAlphabeticalSoting)
Sort optionInfoList
我尝试了optionInfoList.Sort()但它无法正常工作。
答案 0 :(得分:26)
使用sort方法和lambda表达式,非常简单。
myList.Sort((a, b) => String.Compare(a.Name, b.Name))
上面的示例显示了如何按对象类型的Name属性进行排序,假设Name是string类型。
答案 1 :(得分:8)
如果您只想让Sort()
工作,那么您需要在课程中实施IComparable
或IComparable<T>
。
如果您不介意创建 new 列表,可以使用OrderBy
/ ToList
LINQ扩展方法。如果要使用更简单的语法对现有列表进行排序,可以添加一些扩展方法,启用:
list.Sort(item => item.Name);
例如:
public static void Sort<TSource, TValue>(
this List<TSource> source,
Func<TSource, TValue> selector)
{
var comparer = Comparer<TValue>.Default;
source.Sort((x, y) => comparer.Compare(selector(x), selector(y)));
}
public static void SortDescending<TSource, TValue>(
this List<TSource> source,
Func<TSource, TValue> selector)
{
var comparer = Comparer<TValue>.Default;
source.Sort((x, y) => comparer.Compare(selector(y), selector(x)));
}
答案 2 :(得分:2)
public class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
}
List<Person> people = new List<Person>();
people.Sort(
delegate(Person x, Person y) {
if (x == null) {
if (y == null) { return 0; }
return -1;
}
if (y == null) { return 0; }
return x.FirstName.CompareTo(y.FirstName);
}
);
答案 3 :(得分:1)
您需要设置一个比较器,告诉Sort()如何排列项目。
查看List.Sort Method (IComparer)以获取有关如何执行此操作的示例...