每当我从前端添加一个新对象时,id = 0.在WebApi层中,我试图找到对象列表中存在的最大ID,然后将下一个ID分配给新物件。下面的代码不会正确增加ID
List<Event> events = eventVal.Where(e => e != null).ToList();
int eventMaxID = events.Max(e => e.id);
events.Where(e => e.id == 0)
.Select((e, ixc) => new { id = eventMaxID + 1, Iter = eventMaxID + 1 })
.ToList();
我不确定如何使用Select方法的第二个参数。
任何帮助将不胜感激!感谢。
答案 0 :(得分:3)
在您正在使用的第二种选择形式中,ixc是集合中项目的索引。您需要添加该功能以及之前的最大ID。这样你也不必担心分配给Iter(看起来你只是把它当作某种计数器使用)所以我已经删除了它。
var autoIncrementedEvents = events.Where(e => e.id == 0)
.Select((e, ixc) =>
{
e.id = eventMaxId + 1 + ixc;
return e;
})
.ToList();
请注意,编写代码的方式是Linq语句的结果。你想把它分配给我在上面做过的事情。
我不打算将此作为网络设置中的整体方法(竞争条件,重复ID等)的有效性发表评论。理想情况下,您的数据存储区应该分配Id。