如何将通用 ObservableCollection<T> 分配给已知 T 参数的 ObservableCollection?

How to assign generic ObservableCollection<T> to ObservableCollection of known T parameter?

我什至不确定这个问题问的是否正确,因为我不知道如何命名它。对不起,如果混淆,但我会尝试逐步解释我不知道的内容。在我的 VM 中,其中一种方法是调用 service 方法:

public ObservableCollection<LoadedJockey> Jockeys { get; private set; }
Jockeys = await _updateDataService.UpdateDataAsync(Jockeys, JPlFrom, JPlTo, "updateJockeysPl");

service 方法接受类型为 ObservableCollection<T>argument,因此 Jockeys 可以是 HorsesCarsPoneys 等。在我的 service 方法中,我需要将通用集合分配给 ObservableCollection<LoadedJockeys>(已知类型)传递给 参数 ,得到这样的东西:

public async Task<ObservableCollection<T>> UpdateDataAsync<T>(ObservableCollection<T> genericCollection, int idFrom, int idTo, string jobType)
           if (jobType.Contains("Horses"))
           {
                  ObservableCollection<LoadedHorses> horses = genericCollection;
           }
           else if (jobType.Contains("Jockeys"))
           {
                  ObservableCollection<LoadedJockeys> jockeys = genericCollection;
           }

怎么做?

投射元素

ObservableCollection<LoadedJockeys> jockeys = 
new ObservableCollection<LoadedJockeys>(genericCollection.Cast<LoadedJockeys>());

或者只取匹配的元素

ObservableCollection<LoadedJockeys> jockeys = 
new ObservableCollection<LoadedJockeys>(genericCollection.OfType<LoadedJockeys>());