【发布时间】:2012-12-06 21:44:03
【问题描述】:
我在使用数组作为排序源按索引对列表进行排序时遇到问题。
假设我的班级有 5 条记录
class Program
{
static void Main(string[] args)
{
int[] myInt {2,1,0,3,4}
List<Tests> myTests = new List<Tests>;
//this part doesn't work
for (int i = 0; i < 4; i++)
{
myInt[i] = myTests[i];
}
myTests.ForEach(i => Console.WriteLine("{0} {1}", i.id, i.myString));
}
}
我的班级定义
class Tests
{
public int iD {get; set;}
public string myString {get; set;}
public Tests (int iD, string myString)
{
this.iD = iD;
this.myString = myString
}
{
我想看到什么出来
record 2
record 1
record 0
record 3
record 4
我尝试对列表使用排序函数,但我找不到任何使用数组作为排序标准的示例,所以我有点迷路了。我感谢提供的任何帮助。
【问题讨论】:
-
List<Tests> myTests = new List<Tests>;不会编译。你是说new List<Tests>();还是new List<Tests>(myInt);? -
你能给我们举一个更复杂的例子吗?无论您将
myInt[i]解释为“列表中我希望ith 元素结束的位置”还是“我想放置在位置i的元素的原始位置”,您的示例都会给出相同的输出在输出中”(即myInt[0] = 2- 这是说“将记录 2 放在位置 0”还是“用记录 0 填充位置 2”?) -
如果您发布已编译的代码,或者更紧密地匹配您的问题,回答您的问题会容易得多。
-
对不起,我首先遇到了代码编译问题,这就是我在这里的原因。但是,由于 Rawlings cmets,我已经意识到我做错了什么以及为什么它不起作用。但是,我已经意识到一种更简单且可能更高效的方法,只需对原始记录进行 LINQ 查询,而不是重新排列代表它们的对象。感谢大家的帮助,谢谢!