我有一个包含 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使其工作的方法。
