Год опоздал, но у меня возникла та же проблема, и вот что вам нужно сделать
List<SomeClass> mylist = new List<SomeClass>();
DataContractSerializer dcs = new DataContractSerializer(mylist.GetType());
XmlWriter writer = XmlWriter.Create(sb, XWS);
dcs.WriteObject(writer, query);
writer.Close();
Проблема в том, что когда вы создаете ваш сериализатор с типом вашего класса, сериализатор не видит его как массив, он видит только один объект.
Если нашел это, сделав это первым:
DataContractSerializer dcs = new DataContractSerializer(SomeClass.GetType());
XmlWriter writer = XmlWriter.Create(sb, XWS);
dcs.WriteObject(writer, query[0]); // Only get the first record from linq to sql
writer.Close();