将LINQ结果转换为ObservableCollection
Jon Skeet在这个问题中给出了很好的答案,但是我仍然不能自己完成。
我还是新手使用类,所以我还在学习阶段。
我已经创建了一个LINQ到SQL类,显然有很多自动生成的代码。这是添加类时生成的与此问题相关的类的片段。这显然与名为Staff_Time_TBL
的数据库表相关联。
public partial class Staff_Time_TBL : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private long _ID;
private System.Nullable<System.DateTime> _Date_Data;
}
我有一个工作类,可以将我需要的数据放入Datagrid中,它可以从两个日期之间和拥有唯一员工编号的员工那里获取数据。这个方法很好用。但是当直接更新数据库中的数据时,界面中的数据没有被更新。请查看这个问题。
internal class DatabaseQueries
{
public static IEnumerable<Staff_Time_TBL> 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<Foo>(linqResults);
如何创建一个ObservableCollection类来保存LINQ查询结果?
我尝试了以下代码,但查询语句会导致编译错误:
无法隐式地将类型'System.Collections.Generic.List'转换为'System.Collections.ObjectModel.ObservableCollection'
public ObservableCollection<Staff_Time_TBL> observerableInfoData { get; set; }
public MainWindow()
{
DataContext = this; // required for C# binding
InitializeComponent();
observerableInfoData = new ObservableCollection<Staff_Time_TBL>();
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();
ObservableCollection<T>
实例来保存该 LINQ 查询的结果。即使按照你自己的说法,这也是你问题的 答案 。你不理解哪一部分呢? - Peter Duniho