我有使用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}
的结构中。我还创建了一个List来存储匿名结构对象:
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 not guaranteeing插入顺序,这可能会有问题。
我有什么选择?
答案 0 :(得分:0)
将您的排序结果作为Enumerable返回:
var result = inRangeWalks.Sort((x, y) =>
x.DistanceFromPostcode.CompareTo(y.DistanceFromPostcode)).AsEnumerable();
应保留排序顺序。
但是,List<T>
实施了IEnumerable
,因此您实际上应该可以直接使用该列表作为ListView
的数据源。