Да, он перезаписывает атрибуты первой записи, потому что вы говорите об этом - вы не используете только что созданный элемент записи. Вы можете сделать это так:
foreach (InfringementEntity ie in iLES.infringementEntities)
{
XElement newRecord = new XElement("Record");
newRecord.SetAttributeValue(BusinessConstants.colInfringementNumber,
ie.infringementNumber);
newRecord.SetAttributeValue(BusinessConstants.colIssueAgency,
responseXML.Add(newRecord);
}
... но есть и более идиоматические способы сделать это, например:
XElement responseXML = new XElement("Records",
iLes.infringementEntities.Select(ie => new XElement("Record",
new XAttribute(BusinessConstants.colInfringementNumber,
ie.infringementNumber),
new XAttribute(BusinessConstants.colIssueAgency, ie.issueAgency))));
Это заменяет весь вашего кода, включая оператор foreach
.