IQueryable <a>до ObservableCollection <a>, где a = анонимный тип - PullRequest
8 голосов
/ 03 апреля 2012

Я хочу, чтобы текст данных моего списка был привязан к наблюдаемой коллекции. Прямо сейчас у меня есть:

               // 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 и т. Д. ... Как я могу это сделать?

Ответы [ 2 ]

14 голосов
/ 03 апреля 2012

Вы можете обмануть и создать метод, который сделает это за вас, так как методы могут автоматически определять универсальный тип:

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

О, и если это поможет, вы можете создать это как метод расширения, чтобы его было проще использовать ... до вас.

1 голос
/ 20 октября 2016

В дополнение к m-y ответу, чтобы использовать его как расширение, вы должны поставить «this» перед аргументом метода:

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