LINQ查询到ObservableCollection?

将LINQ结果转换为ObservableCollection

Jon Skeet在这个问题上给出了一个很好的答案,但我仍然不能自己做。

对于课程来说仍然是新手,所以我仍然处于学习阶段。

我已经创建了一个LINQ to SQL类,显然有很多自动生成的代码。 这是添加类时生成的类的片段,与此问题相关。 这显然与名为Staff_Time_TBL的DataBase表相关联。

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

我有一个工作类,它可以将我需要的数据输入到Datagrid中,它从两个日期之间以及具有唯一员工编号的工作人员中提取数据。 这样可以正常工作,但是当直接将数据更新到数据库时,界面中的数据不会更新, 请参阅此问题。

 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); } 

这个答案中的代码是可以理解的,但我不知道foo需要什么?

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

如何创建一个Observablecollection类来保存LINQ查询?

这是我尝试做的事情,但在查询时给了我一个编译错误。

无法将类型’System.Collections.Generic.List’隐式转换为’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(); 

基本上,您需要将实际查询的IEnumerable结果传递给数据库以初始化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);