繁体   English   中英

如何将排序的集合返回到ListView?

[英]How to return a sorted collection to ListView?

我有要通过EF访问的数据(“ DogWalk”)。 在运行时,我正在确定DogWalk与输入的邮政编码之间的距离。 这工作正常,但是,我很难将IEnumerable 排序的集合返回到ListView

该代码是方法public IEnumerable<DogWalk> ListView1_GetData() 我有一个清单,其中包含所有散步

List<DogWalk> grabAllWalks = (from w in db.DogWalks.Include("Pictures")
                                      select w).ToList();

我遍历遍历遍历并将其添加到存储{double distance, DogWalk theWalk} 我还创建了一个列表来存储匿名结构对象:

var inRangeWalks = new List<InRangeWalks>();
foreach (var walk in grabAllWalks)
  {
   double dis = ....;

   if (dis <= radius) //if within range, add to list
   {
     inRangeWalks.Add(new InRangeWalks(dis, walk));
   }
}

现在,我根据邮政编码距离对列表进行排序:

inRangeWalks.Sort((x, y) => x.DistanceFromPostcode.CompareTo(y.DistanceFromPostcode));

问题是我需要返回IEnumerable集合。 我可以做类似的事情:

IEnumerable<DogWalk> sortedWalks = inRangeWalks.Select(x => x.Walk); 

但是,由于IEnumerable 无法保证插入顺序,因此可能会出现问题。

我有什么选择?

像这样将您的排序结果作为Enumerable返回:

var result = inRangeWalks.Sort((x, y) =>
                  x.DistanceFromPostcode.CompareTo(y.DistanceFromPostcode)).AsEnumerable();

应该保留排序顺序。

但是, List<T>实现IEnumerable因此您实际上应该能够直接将列表用作ListView的数据源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM