Skip to main content
 首页 » 编程设计

c#之如何在 C# 中创建一个序列号作为另一个集合中的一个字段的集合

2024年02月01日29shangdawei

我有一个包含 AnswerDetail 对象集合的变量 Answers:

IEnumerable<AnswerDetail> Answers = ... 

AnswerDetail 类:

public class AnswerDetail 
{ 
    public int AnswerId { get; set; } 
    public string Text { get; set; } 
    public bool? Correct { get; set; } 
    public bool? Response { get; set; } 
} 

AnswerId 对于应用程序是唯一的,但我想更改它 它们是以 1 开头的序列号。我如何填充以下内容 类,交换源对象 Answers 中的长数字并将 数字 1、2、3 等到 AnswerUid 字段而不是原始数字。换句话说,我想在将它发送给客户端时完全丢失 AnswerId 号,而只发送简单的序列号。

public class AnswerDetailToClient 
{ 
    public int AnswerUId { get; set; } 
    public string Text { get; set; } 
    public bool? Correct { get; set; } 
    public bool? Response { get; set; } 
} 

请您参考如下方法:

您可以使用 Select采用 Func<TSource, int, TResult> 的方法重载代表:

return Answers.Select((x,i) => { x.AnswerUID = i; return x; }); 

更改 i与 i + 1从1开始, 否则将从 0 开始.

但它会修改你Answers集合项也是如此,因为它们是引用类型实例。您可以在更改 ID 之前克隆您的对象以防止出现这种情况:

return Answers.Select(x => x.Clone()) 
              .Select((x,i) => { x.AnswerUID = i; return x; }); 

您必须实现 Clone使其工作的方法。