DataServiceCollection에서 데이터를 필터링하는 방법은 무엇입니까?WCF 데이터 서비스에서

StackOverflow https://stackoverflow.com//questions/20017988

문제

데이터가 들어왔어 DataServiceCollection EquipBookings, 하지만 이 목록에서 데이터 선택기에서 선택한 날짜에 따라 데이터를 필터링하고 싶습니다.

이를 위해 나는 이것을 작성하려고 시도했지만 작동하지 않습니다.

"암묵적으로 유형 목록을 Dataservicecollection으로 변환할 수 없습니다"라는 오류가 발생했습니다.

  private DateTime _seletedDateChanged;
        public DateTime SeletedDateChanged
        {
            get { return _seletedDateChanged; }
            private set
            {
                _seletedDateChanged = value; 

                         // here i filter collections

                EquipBookings = FilterJobs(_seletedDateChanged);
                NotifyPropertyChanged("SeletedDateChanged");
            }
        }

        public DataServiceCollection<EquipBooking> FilterJobs(DateTime SeletedDateChanged)
        {
            return EquipBookings.Where(c => c.CreatedOn == SeletedDateChanged).ToList();
        }

전체 코드는 다음과 같습니다

        #region EquipBookings
        // Define the binding collection for EquipBookings.
        private DataServiceCollection<EquipBooking> _equipBookings;

        public DataServiceCollection<EquipBooking> EquipBookings
        {
            get { return _equipBookings; }
            private set
            {
                _equipBookings = value;
                _equipBookings.LoadCompleted += OnEquipBookingLoaded;
                NotifyPropertyChanged("EquipBookings");
            }
        }
        public void LoadEquipBookingsData()
        {
            _context = new THA001_devEntities(_rootUri);
            EquipBookings = new DataServiceCollection<EquipBooking>(_context);
            var query = _context.EquipBooking.Expand("Status").Where(x => x.Status.Description.ToLower() == "confirmed").OrderBy(d => d.BookedFromDteTme);
            EquipBookings.LoadAsync(query);
            IsDataLoaded = true;
        }

        private void OnEquipBookingLoaded(object sender, LoadCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                IsDataLoaded = false;
                if (EquipBookings.Continuation != null)
                {
                    EquipBookings.LoadNextPartialSetAsync();
                    EquipBookingList = EquipBookings;
                }
            }
        }
도움이 되었습니까?

해결책

그러면 목록이 반환됩니다.

return EquipBookings.Where(c => c.CreatedOn == SeletedDateChanged).ToList();

반환 유형은 FilterJobs 방법은 DataServiceCollection<EquipBooking> 둘 사이에는 암시적인 변환이 없습니다.컴파일러는 하나를 다른 것으로 변환하는 방법을 이해하지 못합니다.

다음과 같이 할 수 있습니다.

public DataServiceCollection<EquipBooking> FilterJobs(DateTime SeletedDateChanged)
    {
        var equipBookings = EquipBookings.Where(c => c.CreatedOn == SeletedDateChanged);
        var dataServiceCollection = new DataServiceCollection<EquipBooking>(equipBookings);

        return dataServiceCollection;

    }

생성자 오버로드가 있습니다. DataServiceCollection 그건 시간이 좀 걸려 IEnumerable{T} ( IEnumerable ~의 EquipBookings 귀하의 경우)를 매개변수로 사용하세요.편리하게도 이것이 바로 EquipBookings.Where(c => c.CreatedOn == SeletedDateChanged); 보고.

다른 팁

일반 iEnumerable을 ObservableCollection으로 변환해야합니다.이 변환을 수행하려면 확장 메서드를 작성할 수 있습니다.예제는 여기에 잘 제공됩니다.....

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top