【发布时间】:2013-01-22 15:34:26
【问题描述】:
我正在使用此 LINQ 语句按产品名称(升序)对列表进行排序,其中包含每个产品可用的产品名称 (string) 和 Sizes (List<byte>);
LinkedList<FullItemDetails> itemDetails = new LinkedList<FullItemDetails>();
public class FullItemDetails
{
public string ProductName { get; set; }
public List<byte> Sizes { get; set; }
}
现在每次我输入一个新条目 ex; Jacket,6,12,18,10,我认为我的程序正在重新排序我的列表;
itemDetails.AddLast(fullItemDetails);
//SortedProducts
itemDetails = Products.OrderBy(x => x.ProductName).ToList();
如果列表已经排序,我只需将最后一个条目放在正确的位置。 最好的方法是什么。也可以降低算法的复杂度。谢谢
【问题讨论】:
-
根据您处理的数据集有多大,每次重新排序是否会影响性能?该方法必须比较产品名称以确定订单,并且您在正确的位置插入也将执行相同的操作。在这种情况下,您将获得 o(N) 的速度。如果数据集不是很大,我不会担心。
-
您使用的是
LinkedList还是List?您声明了LinkedList,但 LINQ 返回了List。