将LINQ结果转换为ObservableCollection
Jon Skeet在这个问题上给出了一个很好的答案,但我仍然不能自己做.
对于课程来说仍然是新手,所以我仍然处于学习阶段.
我已经创建了一个LINQ to SQL类,显然有很多自动生成的代码.这是添加类时生成的类的片段,与此问题相关.这显然与命名的DataBase表相关联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;
}
Run Code Online (Sandbox Code Playgroud)
我有一个工作类,它可以将我需要的数据输入到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);
}
Run Code Online (Sandbox Code Playgroud)
这个答案中的代码是可以理解的,但我不知道foo
需要什么?
var linqResults = foos.Where(f => f.Name == "Widget");
var observable = new ObservableCollection<Foo>(linqResults);
Run Code Online (Sandbox Code Playgroud)
如何创建一个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();
Run Code Online (Sandbox Code Playgroud)
基本上,您需要IEnumerable<Staff_Time_TBL>
将实际查询的结果传递给数据库以初始化ObservableCollection<Staff_Time_TBL>
:
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<Staff_Time_TBL>(linqResults);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6932 次 |
最近记录: |