Привет, я только что столкнулся с проблемой синхронизации и повторил ее в этом небольшом примере.
class MyClass
{
public int Number { get; set; }
}
static void Main(string[] args)
{
var list = new ObservableCollection<MyClass>
{
new MyClass() {Number = 1},
new MyClass() {Number = 2},
new MyClass() {Number = 3}
};
var count = from i in list where i.Number == 1 select i;
Console.WriteLine("Found {0}", count.Count());
list[2].Number = 1;
Console.WriteLine("Found {0}", count.Count());
}
Это выдаст
Found 1
Found 2
Это не то, что я ожидал,Я догадался, он вернется 1 оба раза.В любом случае, чтобы избежать этого действия и по-прежнему использовать наблюдаемую коллекцию?
Я пытаюсь реализовать метод переупорядочения, но это затрудняет выбор правильного элемента.
ОБНОВЛЕНИЕ
Простым решением, конечно, было бы изменить его следующим образом
int found = count.Count();
Console.WriteLine("Found {0}", found);
list[2].Number = 1;
Console.WriteLine("Found {0}", found);