这个linq OrderBy方法是否真的对任何东西排序?

时间:2018-06-20 21:05:00

标签: c# linq

我在下面遇到了以下内容。它实际上对location集合中的项目进行排序吗?在这种情况下,OrderBy是否对AddRange返回的数据进行操作?

var locations = new List<Location>();
locations.AddRange(propertyStreets
                       .Select(street => new Location 
                       {
                           Name = street.Source.FullStreetName,
                           Type = "Address",
                           ItemType = ItemType.StreetName,
                           City = street.Source.City,
                           State = street.Source.State,
                           SortOrder = GetAddressSortOrder(street, new[] { parsedAddress })
                       })
                       .OrderBy(loc => loc));

1 个答案:

答案 0 :(得分:3)

  

它实际上对位置信息集中的项目进行排序吗?

它基于以下条件:

OrderBy在内部基于提供的表达式创建OrderedEnumerable。在问题OrderBy(loc => loc)中使用对象本身而不是任何属性,因此将使用默认比较。同一比较器,用于通过.Equals()方法比较两个对象。在这种情况下,意义不大。

  

在这种情况下,OrderBy是否对AddRange返回的数据进行运算?

AddRange不返回任何内容。 OrderBy应用于您通过AddRange方法传递的集合的投影,这意味着它正在基于排序表达式获取已排序的项目。