IQueryable的<a> to ObservableCollection</a> <a> where a = anonymous type</a>

时间:2012-04-02 22:16:02

标签: c# casting observablecollection iqueryable

我希望将listview的datacontext绑定到可观察的集合。现在我有:

               // 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;

该代码正确填充了listview。现在,每当我更新listview项时,我都想更新listview。

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

2 个答案:

答案 0 :(得分:14)

您可以作弊并创建一种方法来为您完成,因为方法可以自动推断泛型类型:

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

哦,如果它有帮助你可以创建它作为扩展方法,所以它更容易使用......由你决定。

答案 1 :(得分:1)

除了m-y的答案,为了将它作为一个扩展,你应该把&#34;这个&#34;在方法参数之前:

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