[英]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.