У меня есть данные («DogWalk»), с которыми я обращаюсь с EF. Во время выполнения я определяю расстояние DogWalk относительно введенного почтового индекса. Это прекрасно работает, однако, у меня возникли проблемы с возвратом коллекции IEnumerable в ListView
.Как вернуть отсортированную коллекцию в ListView?
Код является частью метода public IEnumerable<DogWalk> ListView1_GetData()
. У меня есть список, который содержит все прогулки
List<DogWalk> grabAllWalks = (from w in db.DogWalks.Include("Pictures")
select w).ToList();
я Переберите прогулки и добавить их на структуру, в которой хранится {double distance, DogWalk theWalk}
. Я также создать список для хранения скрытых объектов STRUCT:
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 порядка вставки, это может быть проблематичным.
Какие у меня варианты?
Я сделал глупую ошибку, и теперь она работает! Спасибо за отличный ответ и решение (я приму в ~ 3 минуты)! Что такое «лучшее» решение, используя код, который вы написали выше, или просто вернуть список? – gudthing
@gudthing - просто верните список. – ChrisF