Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表中的自动增量Id_C#_Asp.net Mvc_List - Fatal编程技术网

C# 列表中的自动增量Id

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

我在寻找一种方法,给我的列表对象一个自动递增的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;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; }
    }