C# 列表中的自动增量Id
我在寻找一种方法,给我的列表对象一个自动递增的Id,从1到(无论多少) 这是我使用的类C# 列表中的自动增量Id,c#,asp.net-mvc,list,C#,Asp.net Mvc,List,我在寻找一种方法,给我的列表对象一个自动递增的Id,从1到(无论多少) 这是我使用的类 public class Movie { public int Id { get; set; } public string Title { get; set; } public string Director { get; set; } } 我将使用以下列表: public List<Movie> Movies { get; set; } 公共列表电影{get;s
public class Movie
{
public int Id { get; set; }
public string Title { get; set; }
public string Director { get; set; }
}
我将使用以下列表:
public List<Movie> Movies { get; set; }
公共列表电影{get;set;}
现在让我们假设列表包含10部电影,我删除了id为5的电影。我想更改所有电影的id,以便以前id为6的电影现在id为5。有人能给我指出正确的方向吗?这可能太简单了,但为什么不使用列表本身的索引作为id呢?对于您描述的场景,它会很好地工作。然后,在
Movie
类中不需要Id
属性
如果您有一个没有描述的更复杂的情况,您可能需要实现一个类似于参考计数器的东西来跟踪所有
电影生命周期。这可能过于简单,但为什么不使用列表本身的索引作为id呢?对于您描述的场景,它会很好地工作。然后,在Movie
类中不需要Id
属性
如果您有一个没有描述的更复杂的情况,您可能需要实现一个类似于引用计数器的东西来跟踪所有电影生命周期。为电影列表创建一个包装器并让该类处理ID怎么样
public class MoviesList
{
public List<Movie> Movies;
public MoviesList()
{
Movies=new List<Movie>();
}
public void Add(Movie movie)
{
var highestId = Movies.Any() ? Movies.Max(x => x.Id) : 1;
movie.Id = highestId + 1;
Movies.Add(movie);
}
}
公共类电影列表
{
公开电影名单;
公共电影列表()
{
电影=新列表();
}
公共无效添加(电影)
{
var highestId=Movies.Any()?Movies.Max(x=>x.Id):1;
movie.Id=highestId+1;
添加(电影);
}
}
为电影列表创建一个包装器并让该类处理ID怎么样
public class MoviesList
{
public List<Movie> Movies;
public MoviesList()
{
Movies=new List<Movie>();
}
public void Add(Movie movie)
{
var highestId = Movies.Any() ? Movies.Max(x => x.Id) : 1;
movie.Id = highestId + 1;
Movies.Add(movie);
}
}
公共类电影列表
{
公开电影名单;
公共电影列表()
{
电影=新列表();
}
公共无效添加(电影)
{
var highestId=Movies.Any()?Movies.Max(x=>x.Id):1;
movie.Id=highestId+1;
添加(电影);
}
}
您可以使用Add
和Remove
方法创建类似于自定义集合的内容。这样,在向列表中添加新项目时,您也不需要指定ID
public class Movies
{
public List<Movie> List { get; set; }
public Movies()
{
List = new List<Movie>();
}
public void Add(Movie newMovie)
{
newMovie.Id = List.Count > 0 ? List.Max(x => x.Id)+1 : 1;
List.Add(newMovie);
}
public void Remove(Movie oldMovie)
{
List.Remove(oldMovie);
List.ForEach((x) => { if (x.Id > oldMovie.Id) x.Id = x.Id - 1; });
}
}
您可以使用Add
和Remove
方法创建类似于自定义集合的内容。这样,在向列表中添加新项目时,您也不需要指定ID
public class Movies
{
public List<Movie> List { get; set; }
public Movies()
{
List = new List<Movie>();
}
public void Add(Movie newMovie)
{
newMovie.Id = List.Count > 0 ? List.Max(x => x.Id)+1 : 1;
List.Add(newMovie);
}
public void Remove(Movie oldMovie)
{
List.Remove(oldMovie);
List.ForEach((x) => { if (x.Id > oldMovie.Id) x.Id = x.Id - 1; });
}
}
我将从列表
对象继承并重写它的基本添加/删除函数,在添加/删除时递增并重新设定值,使用列表的索引作为id的基础,类似这样(未真正测试)-
公共类电影列表:列表
{
公共新空添加(电影m)
{
基础。添加(m);
m、 Id=这个指数xof(m);
}
公共新作废删除(电影m)
{
底座。移除(m);
m、 Id=-1;
重新设定种子();
}
公共新空移除(内部索引)
{
电影m=这个[索引];
这个。删除(m);
}
public new int RemoveAll(谓词匹配)
{
列表删除=新列表();
foreach(电影《我在这里》)
如果(匹配(m))
删除。添加(m);
foreach(电影m正在删除)
{
这个。删除(m);
}
返回删除。计数;
}
公共新无效删除范围(整数索引、整数计数)
{
for(int i=索引;i
我将继承列表
对象,覆盖它的基本添加/删除函数,在添加/删除时增加并重新设定值,使用列表索引作为id的基础,类似这样(未真正测试)-
公共类电影列表:列表
{
公共新空添加(电影m)
{
基础。添加(m);
m、 Id=这个指数xof(m);
}
公共新作废删除(电影m)
{
底座。移除(m);
m、 Id=-1;
重新设定种子();
}
公共新空移除(内部索引)
{
电影m=这个[索引];
这个。删除(m);
}
public new int RemoveAll(谓词匹配)
{
列表删除=新列表();
foreach(电影《我在这里》)
如果(匹配(m))
删除。添加(m);
foreach(电影m正在删除)
{
这个。删除(m);
}
返回删除。计数;
}
公共新无效删除范围(整数索引、整数计数)
{
for(int i=索引;ipublic class Employee
{
public Guid Id { get; private set; } = Guid.NewGuid();
public string EmployeeName { get; set; }
public string Address { get; set; }
}