如何return一个排序好的集合到ListView?
How to return a sorted collection to ListView?
我有正在使用 EF 访问的数据 ('DogWalk')。在运行时,我正在确定 DogWalk 相对于输入的邮政编码的距离。这工作正常,但是,我在 return 将 IEnumerable sorted 集合添加到 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));
问题是我需要 return 一个 IEnumerable
集合。我可以做类似的事情:
IEnumerable<DogWalk> sortedWalks = inRangeWalks.Select(x => x.Walk);
但是对于 IEnumerable not guaranteeing 插入顺序,这可能会有问题。
我有哪些选择?
将您的排序结果作为 Enumerable 返回,如下所示:
var result = inRangeWalks.Sort((x, y) =>
x.DistanceFromPostcode.CompareTo(y.DistanceFromPostcode)).AsEnumerable();
应保留排序顺序。
但是,List<T>
实现了 IEnumerable
,因此您实际上应该能够直接将列表用作 ListView
.
的数据源
我有正在使用 EF 访问的数据 ('DogWalk')。在运行时,我正在确定 DogWalk 相对于输入的邮政编码的距离。这工作正常,但是,我在 return 将 IEnumerable sorted 集合添加到 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));
问题是我需要 return 一个 IEnumerable
集合。我可以做类似的事情:
IEnumerable<DogWalk> sortedWalks = inRangeWalks.Select(x => x.Walk);
但是对于 IEnumerable not guaranteeing 插入顺序,这可能会有问题。
我有哪些选择?
将您的排序结果作为 Enumerable 返回,如下所示:
var result = inRangeWalks.Sort((x, y) =>
x.DistanceFromPostcode.CompareTo(y.DistanceFromPostcode)).AsEnumerable();
应保留排序顺序。
但是,List<T>
实现了 IEnumerable
,因此您实际上应该能够直接将列表用作 ListView
.