Requête LINQ dans ObservableCollection?

Conversion du résultat LINQ dans ObservableCollection

Jon Skeet a donné une excellente réponse à la question, mais je ne peux toujours pas créer la mienne.

Toujours nouveau en classe , je suis donc encore en phase d’apprentissage avec eux.

J’ai créé une classe LINQ to SQL et, évidemment, il y a beaucoup de code généré automatiquement. C’est un extrait de la classe généré lors de l’ajout de la classe, qui est pertinent pour cette question. Ceci est évidemment lié à la table de firebase database nommée Staff_Time_TBL .

 public partial class Staff_Time_TBL : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(Ssortingng.Empty); private long _ID; private System.Nullable _Date_Data; } 

J’ai une classe ouvrière que j’ai créée qui obtient les données dont j’ai besoin dans la grid de données. Elle extrait les données entre deux dates et d’un membre du personnel avec un numéro d’employé unique. Cela fonctionne bien, mais lors de la mise à jour directe des données vers la firebase database, les données de l’interface ne sont pas mises à jour, voir cette question.

 internal class DatabaseQueries { public static IEnumerable MainTable(DatabaseDataContext database, DateTime fromDate, DateTime toDate, int employeeNumber) { return database.Staff_Time_TBLs.Where(staff => staff.Date_Data > fromDate && staff.Date_Data < toDate && staff.Staff_No == employeeNumber); } 

Ce code dans cette réponse est compréhensible, mais je n’ai aucune idée de ce que foo aurait besoin d’être?

 var linqResults = foos.Where(f => f.Name == "Widget"); var observable = new ObservableCollection(linqResults); 

Comment créer une classe Observablecollection pour contenir la requête LINQ?

C’est ce que j’ai essayé de faire, mais me donne une erreur de compilation lors de la requête.

Impossible de convertir implicitement le type ‘System.Collections.Generic.List’ en ‘System.Collections.ObjectModel.ObservableCollection’

 public ObservableCollection observerableInfoData { get; set; } public MainWindow() { DataContext = this; // required for C# binding InitializeComponent(); observerableInfoData = new ObservableCollection(); observerableInfoData = sql.Staff_Time_TBLs.Where(staff => staff.Staff_No == SelectedEmployee.Key && staff.Date_Data == filterFrom && staff.Date_Data == filterTo).Select(staff => staff.Info_Data).ToList(); 

Fondamentalement, vous devez transmettre le résultat IEnumerable de la requête réelle à la firebase database pour initialiser ObservableCollection :

 var linqResults = sql.Staff_Time_TBLs .Where(staff => staff.Staff_No == SelectedEmployee.Key && staff.Date_Data == filterFrom && staff.Date_Data == filterTo); var observable = new ObservableCollection(linqResults);