我有一个IEnumerable<IEnumerable<int>>类型的对象。我需要对内部IEnumerable<int>中的int进行排序,但是我不确定该怎么做。
我尝试将IEnumerable<IEnumerable<int>>转换为List<List<int>>,以便使用下面的代码简化排序:
var sortedResults = results.ForEach(x => x.ToList());但我收到错误消息“无法将void赋值给隐式类型的变量”
如果我一次完成排序和转换,我也会收到相同的错误:
var sortedResults = results.ToList().ForEach(x => x.ToList().Sort((a ,b) => a.CompareTo(b))));做这件事最好的方法是什么?
发布于 2012-04-28 04:39:15
只需使用OrderBy -因为这些是整数,这意味着您可以使用数字本身作为标准:
sortedResults = results.Select(x => x.OrderBy(num => num));上面假设你希望输出只是一个IEnumerable<IEnumerable<int>>,如果你需要列表,使用ToList() were。
发布于 2012-04-28 04:39:36
var sortedResults = results.Select(list => list.OrderBy(x => x));发布于 2012-06-16 22:36:25
我试着画一个如何使用IEnumerable订购的例子,我想我可以帮助你理解它是如何工作的。观察这个例子,希望对你理解这个例子有所帮助:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
class Person
{
public string name { get; set; }
public int personage { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
Person[] p ={new Person{name="Alice",personage=10 },
new Person{name="Alex",personage=11},
new Person{name="Danny",personage=12}};
IEnumerable<Person> query = p.OrderBy(ps => ps.personage);
foreach (Person item in query)
{
textBox1.Text += item.name + item.personage.ToString() + Environment.NewLine;
}
}这样做的结果是:
Alice10
Alex11
Danny12
https://stackoverflow.com/questions/10357522
复制相似问题