C# 如何对列表进行排序<;datarow>;?

C# 如何对列表进行排序<;datarow>;?,c#,linq,C#,Linq,我有一个数据表,我将把它转换成列表。如何根据某个datatable列对列表进行排序?我认为它类似于list=list.Sort(p=>p.Field()),但我不确定语法 我对大量使用LINQ很感兴趣,因此我想知道是否应该将数据表转换为强类型泛型列表,并从中获取它,而不是将LINQ转换为数据集。我现在不这样做的唯一原因是出于性能原因。数据表由大约20000条记录组成。我建议您将数据集转换为基因ric列表并使用linq进行排序: var collection = from

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


我对大量使用LINQ很感兴趣,因此我想知道是否应该将数据表转换为强类型泛型列表,并从中获取它,而不是将LINQ转换为数据集。我现在不这样做的唯一原因是出于性能原因。数据表由大约20000条记录组成。

我建议您将数据集转换为基因ric列表并使用linq进行排序:

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

return collection.ToList();
其中人员是通用列表。使用linq还有其他排序方法


你总是要返回20k条记录吗?据我所知,由于所有内置的.NET函数和方法,datatables/Set/rows比generic List的开销更大……但我可能错了。

一般来说,如果你想对
列表进行排序,你可以执行以下操作

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

显然,本例是按字母顺序对字符串值进行排序,但您应该了解要使用的语法。

您可以使用以下内容:-

list.Sort((x,y) => (int)x[i] > (int)y[i] ? 1 : ((int)x[i] < (int)y[i] ? -1 : 0))
请注意,
Sort
方法对列表进行适当排序,但不会创建新列表

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