1

我有一个类型的对象IEnumerable<IEnumerable<int>>。我需要对内部的整数进行排序,IEnumerable<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))));

做这个的最好方式是什么?

4

3 回答 3

6

只需使用OrderBy- 因为这些是整数,这意味着您可以使用数字本身作为标准:

sortedResults = results.Select(x => x.OrderBy(num => num));

上面假设您希望输出只是一个IEnumerable<IEnumerable<int>>如果您需要列表,ToList()则需要使用。

于 2012-04-27T20:39:15.210 回答
3
var sortedResults = results.Select(list => list.OrderBy(x => x));
于 2012-04-27T20:39:36.473 回答
0

我试图绘制一个如何使用 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

于 2012-06-16T14:36:24.883 回答