c# - LINQ 查询到 ObservableCollection?

标签 c# linq

Cast LINQ result to ObservableCollection

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

classes 还是新手| , 所以我还在和他们一起学习阶段。

我制作了一个 LINQ to 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;
    }

我有一个我制作的工作类,它可以将我需要的数据获取到数据网格中, 它从两个日期之间以及从具有唯一员工编号的员工中提取数据。这样可以正常工作,但是当直接更新数据到数据库时,界面中的数据没有更新,see this question.

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

This code in this answer是可以理解的,但我不知道 foo 需要是什么?

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

var observable = new ObservableCollection<Foo>(linqResults);

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

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

Cannot implicitly convert type 'System.Collections.Generic.List' to '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();

最佳答案

基本上,你需要通过 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);

关于c# - LINQ 查询到 ObservableCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277807/

相关文章:

c# - 当 ToString ("0.0") 以 Razor 形式使用整数时,显示整数而不是小数

c# - 为什么InvocableExpression的Arguments是Expression而不是ParameterExpression?

c# - 从字符串中匹配英语词典单词

c# - 需要帮助在 C# 中编写嵌套 SQL 查询

c# - 使用 LINQ 查找重叠的时间段(事件)

c# - 我如何让 TestDriven.net 使用 NCover 生成有用的代码覆盖率 XML 文件?

c# - 无法找到 HttpContextBase 即使我正在使用 System.Web

c# - 如何删除 lambda 表达式的 Where 条件?

c# - 为什么 LINQ 中的 LastOrDefault(predicate) 比 FirstOrDefault(predicate) 更快

C# JSON.Net 使用 LINQ 解析并获取与某个值匹配的所有元素的列表