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]))