【问题标题】:IQueryable<a> to ObservableCollection<a> where a = anonymous typeIQueryable<a> 到 ObservableCollection<a> 其中 a = 匿名类型
【发布时间】:2012-04-02 22:16:01
【问题描述】:

我希望我的列表视图的数据上下文绑定到一个可观察的集合。现在我有:

               // CurrentEmploye = some employee
               Entities.DatabaseModel m = new Entities.DatabaseModel();
               var q = from t in m.TimeSheet                            
                        join emp in m.Employees on t.idEmployee equals emp.id
                        where emp.id == CurrentEmploye.id
                        select new
                        {
                            firstName = emp.firstName,
                            lastName = emp.lastName,
                            position = emp.position,
                            clockInDate = t.clockInDate,
                            clockOutDate = t.clockOutDate,
                        };

                        listView1.DataContext = q;

该代码正确填充列表视图。现在,每当我更新列表视图项目时,我都会更新列表视图。

我希望变量q 为 ObservableCollection 类型,而不必创建包含 firstName、lastName、position 等的自定义类...我该怎么做?

【问题讨论】:

  • 我假设您尝试了listView1.DataContext = new ObservableCollection(q),但它不起作用,对吧?...
  • 新的 ObservableCollection(q);需要一个类型,我不知道类型。也许我会通过反思得到它。谢谢,这是一个有用的评论。
  • 啊,你说得对,我完全忘记了对方法有效的东西并不总是对构造函数有效。让我们等 Jon Skeet 吧:)
  • 取消等待! He did it already!
  • 我想我当时有一个重复的问题。把它作为答案,我会接受它。感谢您的帮助。

标签: c# casting observablecollection iqueryable


【解决方案1】:

你可以作弊并创建一个方法来为你做这件事,因为方法可以自动推断泛型类型:

public ObservableCollection<T> ToObservableCollection<T>(IEnumerable<T> enumeration)
{
    return new ObservableCollection<T>(enumeration);
}

哦,如果对您有帮助,您可以将其创建为扩展方法,以便更易于使用...由您决定。

【讨论】:

  • 有没有办法在不使用泛型的情况下做到这一点?我的意思是,使用内联代码而不创建真正的类型。类似 ObservableCollection ?
【解决方案2】:

除了 m-y 答案之外,为了将其用作扩展,您应该将“this”放在方法参数之前:

public ObservableCollection<T> ToObservableCollection<T>(this IEnumerable enumeration){ return new ObservableCollection<T>(enumeration) }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-06
    • 2013-12-02
    • 1970-01-01
    • 2016-01-31
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    相关资源
    最近更新 更多