如何对列表<datarow>?</datarow>进行排序

时间:2010-01-13 19:56:50

标签: c# linq

我有一个数据表,我将转换为list<datarow>。如何根据某些数据表列对列表进行排序?我认为它类似于list = list.Sort(p =&gt; p.Field()但我不确定语法。

我对使用LINQ感兴趣,所以我想知道是否应该将数据表转换为强类型通用列表并从那里取而不是使用linq到数据集。我现在没有这样做的唯一原因是出于性能原因。数据表包含大约20,000条记录。

3 个答案:

答案 0 :(得分:1)

我建议你将数据集转换为通用列表并使用linq进行排序:

var collection =
            from c in people
            orderby c.Name ascending
            select c;

return collection.ToList();

人们是通用名单。还有其他方法可以使用linq进行排序。

你总是会返回20k的记录吗?我理解它的方式,由于所有内置的.NET函数和方法,数据表/集/行的开销比通用列表更多......但我可能错了。

答案 1 :(得分:1)

一般情况下,如果您想对List<T>进行排序,您可以执行类似

的操作
list.Sort((a, b) => String.Compare(a.StringValue, b.StringValue));

显然这个例子是按字母顺序排序字符串值,但你应该知道要使用的语法。

答案 2 :(得分:0)

您可以使用以下内容: -

list.Sort((x,y) => (int)x[i] > (int)y[i] ? 1 : ((int)x[i] < (int)y[i] ? -1 : 0))

其中i是您要比较的列的索引。在上面的示例中,i列包含整数。如果它包含字符串,您可以执行类似

的操作
list.Sort((x,y) => string.Compare((string)x[i], (string)y[i]))

请注意,Sort方法会对列表进行排序,但不会创建新列表。