Найдите запись в C# CollectionViewSource - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть CollectionViewSource, который содержит набор индексированных записей, извлеченных из серверной таблицы MS SQL, называемой Пример с использованием Entity Framework 6.2.

Пример объявлен как свойство DbSet моего класса DbContext, а именно:

public virtual DbSet<Example> Examples { get; set; }  

Мой CollectionViewSource:

CollectionViewSource exampleViewSource;

Я могу перемещаться по коллекции и подсчитывать количество записей в ней, используя, например, следующее:

int selectedRecordPosition = exampleViewSource.View.CurrentPosition;
exampleViewSource.View.MoveCurrentToPrevious();
int numberOfRecordsInCollectionView = exampleViewSource.View.SourceCollection.Cast<Example>().Count(); 

Как найти конкретную запись в коллекции и установить ее в качестве текущего местоположения указателя записи?

Я ищу что-то вроде:

    var selectedObject = exampleViewSource.View.SourceCollection.Find(key1, key2);   // example pseudo code.        
    exampleViewSource.View.MoveCurrentTo(selectedObject);

key1 & key2 - Основной доступ ключи для строк таблиц примеров.

Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 03 февраля 2020

BionicCode предоставил решение моего вопроса, но кто-то, должно быть, удалил его. Основываясь на ответе BionicCode, я кодировал….

Example selectedObject = exampleViewSource.View.SourceCollection.Cast<Example>()
                         .Where(selectedRecord =>
                          selectedRecord.Column1Name == key1 && 
                          selectedRecord.Column2Name == key2)
                         .FirstOrDefault();
if (selectedObject == null) break;
exampleViewSource.View.MoveCurrentTo(selectedObject);

Единственное отличие состоит в том, что BionicCode не использовал приведение, и его сообщение исчезло, прежде чем я смог точно его выполнить. В любом случае, большое спасибо BionicCode - вы сняли меня с крючка.

...