0
votes

I have a CollectionViewSource that contains a set of indexed records extracted from an MS SQL Server Table called Example using Entity framework 6.2.

Example is declared as a DbSet property of my DbContext class viz:

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

My CollectionViewSource is:

CollectionViewSource exampleViewSource;

I can move around the collection and count the number of records it contains using the following for example:

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

How can I find a particular record in the collection and set it as the record pointer's current location?

I'm looking for something like:

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

key1 & key2 are the Primary access keys for the Example tables' rows.

Can anyone help please?

1
What is not working with your code? Are you struggling with the filter query? How does a Example item relate to key1 and key2? - BionicCode
Hi Bionic. As said above "I have a CollectionViewSource that contains a set of indexed records extracted from an MS SQL Server Table called Example using Entity framework 6.2." and "key1 & key2 are the Primary access keys for the Example tables' rows." Together, key1 and key2 uniquely index each row of the Example table. - Joe

1 Answers

1
votes

BionicCode provided a solution my question but someone must have deleted it. Based on BionicCode's answer I coded ….

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

The only difference is that BionicCode didn't use a Cast and his post disappeared before I could follow it exactly. Anyway, many thanks BionicCode - you got me off the hook.