Как получить следующий объект в IEnumberable / IQueryable, если идентификатор ключа не соответствует? - PullRequest
1 голос
/ 12 февраля 2010

После взлома моего текущего приложения - я снова столкнулся с проблемой, которая убивает часть радости , которую я ожидал от своей модели домена.

Проблема здесь в том, что aggregate root / самый важный класс в моей доменной модели не имеет согласованных значений идентификаторов для своих записей. (Например, испорчено: 1..3..5..12..150..157.. и т. Д. | Это потому, что это база данных, которая обновляется со времени MS Access 1997 и теперь масштабируется до MSSQLServer).

Есть ли способ получить объект real next в текущей коллекции (что означает, что он не просто основан на значении идентификатора)?

Что бы вы, ребята, предложили мне сделать в этом случае?

И это хорошая идея:

  • Удалить поле идентификатора и восстановить его?
  • Создать несколько HelperMethods, чтобы получить следующий объект в текущем? (Как бы вы этого добились??)

1 Ответ

2 голосов
/ 12 февраля 2010

Идентифицированы ли идентификаторы как минимум, даже если есть пробелы?Если это так, просто упорядочите по идентификатору и выполните итерации по перечислению.Если вам нужен доступ к следующему объекту в фильтре (например, Где), вы можете использовать метод расширения, который обеспечивает доступ к индексу в коллекции.

Пример.1:

 var query = db.Root.OrderBy( r => r.ID );
 foreach (var obj in query)
 {
    ....
 }

Пример.2:

var query = db.Root.Where( (r,i) => db.Root.ElementAt(i).Name == r.Name );
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...