Это потому, что вкладка - это именование контейнера, а ваше обновление должно быть update="Search:insTable:display"
. Что вы можете сделать, просто разместите свое диалоговое окно вне формы и все еще внутри вкладки, тогда оно будет: update="Search:display"
Все сказанный leppie - плюс:
int index = mylist.FindIndex(p => p.id == 1);
if(index<0) {
mylist.Add(car3);
} else {
mylist[index] = car3;
}
Это просто использует существующий FindIndex, чтобы определить местоположение автомобиля с идентификатором 1, затем заменить или добавить его. Никакой LINQ; никакой SQL - просто лямбда и List<T>
.
Если Вы хотели сделать обновление нескольких элементов...
foreach (var f in mylist.FindAll(x => x.id == 1))
{
f.id = car3.id;
f.color = car3.color;
f.make = car3.make;
}
Это не LINQ2SQL.
кроме того, LINQ не используется для обновления, только для запросов для объектов.
Можно использовать этот путь:
(from car in mylist
where car.id == 1
select car).Update(
car => car.id = 3);
Моя ссылка этот веб-сайт . Или следующее является кодом для метода Обновления
public static void Update<T>(this IEnumerable<T> source, params Action<T>[] updates)
{
if (source == null)
throw new ArgumentNullException("source");
if (updates == null)
throw new ArgumentNullException("updates");
foreach (T item in source)
{
foreach (Action<T> update in updates)
{
update(item);
}
}
}
Как сказанный Leppie, LINQ для запросов вместо обновления. Однако это может использоваться для создания нового списка:
mylist = new List<Car>(from car in mylist select car.id == 1? car3 : car)
Это - то, если Вы хотите использовать LINQ. Это хорошо и короткий код, конечно, но немного менее эффективно, чем предложение Marc Gravell, поскольку это эффективно создает новый список, вместо того, чтобы обновить старый.
//Item class
Class Item
{
public string Name { get; set; }
}
List < Item > myList = new List< Item >()
//Add item to list
Item item = new Item();
item.Name = "Name";
myList.Add(Item);
//Find the item with the name prop
Item item2 = myList.Find(x => x.Name == "Name");
if(item2 != null)
item.Name = "Changed";
Только один вопрос, почему я должен писать функцию Update для чего-то, что кажется таким простым для списка? Для списков должны быть стандартные методы Add(), Delete(), Edit(), Insert(), Replace() ....Find()