سؤال

لقد حصلت على البيانات 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); عائدات.

نصائح أخرى

تحتاج إلى تحويل Generic iEnumperable إلى OverlessableCollection.يمكنك كتابة طريقة تمديد للقيام بهذا التحويل.يتم إعطاء أمثلة هنا أيضا كذلك كيفية تحويل ienumerable إلى الملاحظ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top