我有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))));
这样做的最佳方式是什么?
答案 0 :(得分:6)
只需使用OrderBy
- 因为这些是整数,这意味着您可以将数字本身用作标准:
sortedResults = results.Select(x => x.OrderBy(num => num));
以上假设您希望输出只需IEnumerable<IEnumerable<int>>
,如果您需要列表,则需要使用ToList()
。
答案 1 :(得分:2)
var sortedResults = results.Select(list => list.OrderBy(x => x));
答案 2 :(得分: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
丹尼12