我有一个函数,它以
如何实现这一点?
IList<string> someVariable
作为参数。我想将其转换为列表,以便按字母顺序对值进行排序。如何实现这一点?
var list = new List<string>(myIList);
list.Sort();
或者
var list = myIList as List<string>;
if (list != null) list.Sort; // ...
IList<T>
不是特定的 List<T>
,并不意味着你不能对它进行排序。ReadOnlyCollection
实现了 IList<T>
但不是 List<T>
。你仍然可以复制它并进行排序。你发布的第二个示例是错误的。 - RomanIList<T>
是如何实现的是一个无关紧要的实现细节,可能会在没有警告的情况下发生更改。你的第二个例子将悄悄地停止运行。我认为,在没有必要的情况下强制使用显式依赖是错误的。 - RomanIList<string> someVariable = GetIList();
List<string> list = someVariable.OrderBy(x => x).ToList();
IList 实现了 IEnumerable 接口。使用 .ToList() 方法。
var newList = myIList.ToList();
newList.Sort();
.ToList
之前调用 .Cast<>
。 - user195488IList<string>
进行排序,方法如下:IList<string> foo = .... ; // something
var result = foo.OrderBy(x => x);
您不必将内容转换为列表即可进行排序。如果您的排序方法需要一个List但不接受IList,则我认为这是实际问题。
此外,如果您真的需要一个List,如果您的IList实际上是一个List(这在某种程度上是可能的),您可以将其解释为这样。因此,我会先检查它是否已经是一个List,然后再创建一个新的List。
var concreteList = parameter as List<T> ?? parameter.ToList();