如何将列表中的多个更改保存回我的数据库?
How to persist multiple changes in a list back to my database?
我有一大批客户。下面是一些示例数据
Id Name Age PriorityLevel
1 Bill 50 1
2 Adam 40 2
3 Cory 60 3
4 Edgar 20 4
我想交换这个列表中的项目,所以使用了这个代码
public static List<T> Swap<T>(this List<T> list, int indexA, int indexB)
{
T tmp = list[indexA];
list[indexA] = list[indexB];
list[indexB] = tmp;
return list;
}
调用代码
List<Customer> cusList = _uow.Customers.GetAll();
cusList.Swap(ddlItem1.SelectedValue, ddlItem2.SelectedValue);
_uow.Save();
当上面的代码是 运行 时,它交换列表中的项目而不是 PriorityLevel
的值。
如果我要将第二个项目与第一个项目交换,上面的代码会按以下方式执行(请注意记录的 ID,它们如何保持不变但顺序发生变化 - 无论如何在调试模式下)
Id Name Age PriorityLevel
2 Adam 40 2
1 Bill 50 1
但我想要它所以它会执行以下操作(注意优先级)
Id Name Age PriorityLevel
1 Bill 50 2
2 Adam 40 1
这怎么可能?
这是交换列表条目的通用代码。你需要更具体的东西
public static void SwapPriorities(this List<Customer> list, int indexA, int indexB)
{
int tmp = list[indexA].Priority;
list[indexA].Priority = list[indexB].Priority;
list[indexB].Priority = tmp;
return list;
}
或者干脆
public static void SwapPriorities(Customer customerA, Customer customerB)
{
int tmp = CustomerA.Priority;
customerA.Priority = customerB.Priority;
customerB.Priority = tmp;
}
当您使用“交换”时,您正在进行“交换列表中的索引位置”操作。
您只是要求交换优先级列表中的值。
简单写:
public void SwapPriorityValues(Customer source, Customer target)
{
var tmpValue = source.PriorityLevel;
source.PriorityLevel = target.PriorityLevel;
target.PriorityLevel = tmpValue;
}
和你的两个客户一起打电话。
我有一大批客户。下面是一些示例数据
Id Name Age PriorityLevel
1 Bill 50 1
2 Adam 40 2
3 Cory 60 3
4 Edgar 20 4
我想交换这个列表中的项目,所以使用了这个代码
public static List<T> Swap<T>(this List<T> list, int indexA, int indexB)
{
T tmp = list[indexA];
list[indexA] = list[indexB];
list[indexB] = tmp;
return list;
}
调用代码
List<Customer> cusList = _uow.Customers.GetAll();
cusList.Swap(ddlItem1.SelectedValue, ddlItem2.SelectedValue);
_uow.Save();
当上面的代码是 运行 时,它交换列表中的项目而不是 PriorityLevel
的值。
如果我要将第二个项目与第一个项目交换,上面的代码会按以下方式执行(请注意记录的 ID,它们如何保持不变但顺序发生变化 - 无论如何在调试模式下)
Id Name Age PriorityLevel
2 Adam 40 2
1 Bill 50 1
但我想要它所以它会执行以下操作(注意优先级)
Id Name Age PriorityLevel
1 Bill 50 2
2 Adam 40 1
这怎么可能?
这是交换列表条目的通用代码。你需要更具体的东西
public static void SwapPriorities(this List<Customer> list, int indexA, int indexB)
{
int tmp = list[indexA].Priority;
list[indexA].Priority = list[indexB].Priority;
list[indexB].Priority = tmp;
return list;
}
或者干脆
public static void SwapPriorities(Customer customerA, Customer customerB)
{
int tmp = CustomerA.Priority;
customerA.Priority = customerB.Priority;
customerB.Priority = tmp;
}
当您使用“交换”时,您正在进行“交换列表中的索引位置”操作。
您只是要求交换优先级列表中的值。
简单写:
public void SwapPriorityValues(Customer source, Customer target)
{
var tmpValue = source.PriorityLevel;
source.PriorityLevel = target.PriorityLevel;
target.PriorityLevel = tmpValue;
}
和你的两个客户一起打电话。