Может потребоваться немного больше, чем простой Linq, чтобы получить желаемый результат. Я попытался смоделировать вашу базу данных с помощью List в следующих примерах.
var result = new StudentCategories
{
Category = associationList
.Join(studentlist,
a=>a.Id,
s=>s.Id,
(a,s)=>new Category{Name=s.Name}).ToList()
};
var serializer = new XmlSerializer(typeof(StudentCategories));
var emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
var settings = new XmlWriterSettings{OmitXmlDeclaration = true,Indent=true};
string xmlString;
using(var sww = new StringWriter())
using(XmlWriter writer = XmlWriter.Create(sww,settings))
{
serializer.Serialize(writer, result,emptyNamespaces);
xmlString = sww.ToString(); // Your XML
}
Где Categories и StudentCategories определены как
[XmlRoot(ElementName="Category")]
public class Category {
[XmlAttribute(AttributeName="Name")]
public string Name { get; set; }
}
[XmlRoot(ElementName="StudentCategories")]
public class StudentCategories {
[XmlElement(ElementName="Category")]
public List<Category> Category { get; set; }
}
Вывод будет
<StudentCategories>
<Category Name="StudentCategory" />
<Category Name="Light" />
</StudentCategories>