C# 转换IList<;字符串>;列出<;字符串>;()

C# 转换IList<;字符串>;列出<;字符串>;(),c#,list,ilist,C#,List,Ilist,我有一个函数,它将IList someVariable作为参数。我想把它转换成一个列表,这样我就可以按字母顺序对值进行排序 我怎样才能做到这一点呢?你可以这样做 var list = new List<string>(myIList); list.Sort(); var list=新列表(myIList); list.Sort(); 或 var list=myIList作为列表; if(list!=null)list.Sort;//。。。 IList实现IEnumerable。使

我有一个函数,它将
IList someVariable
作为参数。我想把它转换成一个列表,这样我就可以按字母顺序对值进行排序

我怎样才能做到这一点呢?

你可以这样做

var list = new List<string>(myIList);
list.Sort();
var list=新列表(myIList);
list.Sort();

var list=myIList作为列表;
if(list!=null)list.Sort;//。。。

IList实现IEnumerable。使用.ToList()方法

IList someVariable=GetIList();
List=someVariable.OrderBy(x=>x.ToList();

您可以使用linq对
IList进行排序,如下所示:

IList<string> foo = .... ; // something
var result = foo.OrderBy(x => x);
IList foo=..;//某物
var result=foo.OrderBy(x=>x);

您不必转换为列表来排序。您的排序方法是否需要列表,但不接受IList。我认为这才是真正的问题

此外,如果您确实需要一个列表,如果您的IList realy是一个列表(这有点可能),您可以将其解释为列表。因此,在创建一个新列表之前,我会首先检查它是否已经是一个列表

var concreteList = parameter as List<T> ?? parameter.ToList();
var concreteList=参数作为列表??参数ToList();

我认为您需要在
之前调用
.Cast
。ToList
仅仅因为给定的
IList
不是一个特定的
列表,并不意味着您不能对其进行排序。实现
IList
,但不是
列表
。您应该仍然能够复制它并对其进行排序。你发布的第二个例子是错误的。也许我不是100%清楚这一点-这没有错,只是在这种情况下不起作用(Sort将不会被调用)-但感谢你的提示-我想这里有足够的例子来选择一个:)在这种情况下不起作用怎么没有错?原因
IList
可能是给定的
IList
是如何实现的,这是一个不重要的实现细节,可以在没有警告的情况下更改。您的第二个示例将悄悄地开始失败。我想说,在没有依赖项的地方强制使用显式依赖项是错误的。您的第一个示例正是我想要的。谢谢你真的需要对列表进行排序,还是只是按照特定的顺序进行迭代?
IList<string> someVariable = GetIList();
List<string> list = someVariable.OrderBy(x => x).ToList();
IList<string> foo = .... ; // something
var result = foo.OrderBy(x => x);
var concreteList = parameter as List<T> ?? parameter.ToList();