簡體   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