在linq的帮助下顺序自动生成Id

Mir*_*ral 4 c# linq sequence auto-generate

我有一个课程预订

public class Booking
    {
        public int Id { get; set; }

        public string From { get; set; }

        public string To { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我在linq的帮助下创建了一个List预订,我想要一些机制,我希望自动生成'Id'属性增加1.

即如果列表预订包含10个预订对象,则第一个对象的Id = 1,第二个Id = 2,因此一个......

任何建议

Sco*_*vey 9

以下内容将为您提供新预订的列表,其中索引将投射到您的ID属性中.你可以做类似的事情来用索引来更新现有的列表......

var myBookings = myExistingListOfTen.Select((b, index) => new Booking
                 {
                     Id = index + 1, 
                     From=b.From, 
                     To=b.To
                 });
Run Code Online (Sandbox Code Playgroud)


Dan*_*ner 6

不好,但它会工作.诀窍是使用提供项目索引的重载.

list = list.Select((item, index) => { item.Id = index; return item; });
Run Code Online (Sandbox Code Playgroud)

这将更新现有的预订,但你也可以选择一个id设置的新实例,return并以Scott Ivey建议的方式重复预订和丢失引用来避免这种丑陋.当然,如果你想要一个基于id的id,你必须添加一个.

我觉得以这种方式生成id有点奇怪,但是如果你得到一个没有id的新预订列表并希望生成它们,它可能是一个可接受的解决方案.在这种情况下,id显然不应该以零或一个开头,而是最大的已分配id加一.