ما هي الطريقة الأكثر فعالية لتحديد واستبدال كائن ضمن ObservableCollection؟
-
03-07-2019 - |
سؤال
ولدي الطريقة التي يتلقى الكائن العملاء التي تغيرت خصائص وأريد حفظه مرة أخرى في مخزن البيانات الرئيسي عن طريق استبدال الإصدار القديم من هذا الكائن.
لا أحد يعرف الصحيح C # طريقة لكتابة التعليمات البرمجية الزائفة للقيام بذلك أدناه؟
public static void Save(Customer customer)
{
ObservableCollection<Customer> customers = Customer.GetAll();
//pseudo code:
var newCustomers = from c in customers
where c.Id = customer.Id
Replace(customer);
}
المحلول
و <م> الأكثر كفاءة م> سيكون لتجنب LINQ ؛-p
int count = customers.Count, id = customer.Id;
for (int i = 0; i < count; i++) {
if (customers[i].Id == id) {
customers[i] = customer;
break;
}
}
إذا كنت تريد استخدام LINQ: هذه ليست مثالية، ولكن ستعمل على الأقل:
var oldCust = customers.FirstOrDefault(c => c.Id == customer.Id);
customers[customers.IndexOf(oldCust)] = customer;
ويجد لهم من قبل ID (باستخدام LINQ)، ثم يستخدم IndexOf
للحصول على موقف، ومفهرس لتحديثه. قليلا أكثر خطورة، ولكن المسح واحد فقط:
int index = customers.TakeWhile(c => c.Id != customer.Id).Count();
customers[index] = customer;
لا تنتمي إلى StackOverflow