Для сортировки ArrayList
вы можете использовать следующий фрагмент кода:
Collections.sort(studList, new Comparator<Student>(){
public int compare(Student s1, Student s2) {
return s1.getFirstName().compareToIgnoreCase(s2.getFirstName());
}
});
С linq-to-sql (от тегов), затем да: можно отметить dmbl как сериализуемый, который использует [DataContract] / [DataMember] подход. Вы делаете это путем установки "Режима Сериализации" на "Однонаправленный" в разработчике, или можно сделать это в самом dbml:
<Database ... Serialization="Unidirectional">...
можно затем использовать DataContractSerializer или NetDataContractSerializer для записи этого (как xml или двоичный файл соответственно). Если Вам будет нужно что-то портативное (т.е. не конкретный MS/.NET), то protobuf-сеть сериализирует контракты данных с помощью "буферной спецификации" протокола.
Следование совету Marc Gravell, который я записал следующим двум блокам кода, которые работали красиво:
relation_table row = db.relation_tables.First();
MemoryStream memStream = new MemoryStream();
NetDataContractSerializer ndcs = new NetDataContractSerializer();
ndcs.Serialize(memStream, row);
byte[] stuff = memStream.toArray();
memStream = new MemoryStream(stuff);
row = ndcs.Deserialize(memStream);
db.relation_tables.Attach(row);
Console.WriteLine(row.data_table1.somedata + ": " + row.more_data);
Присоединение () вызов заполняет зависимости от внешнего ключа для меня и связывает объект с контекстом данных.
Классы Linq являются частичными классами. Можно изменить определение, чтобы отметить классы как реализацию ISerializable и затем предоставить код...
public partial class User : ISerializable
{
// implement GetObjectData here
}
могли бы все еще быть проблемы с десериализацией, однако (я не 100% на этом). Альтернатива должна использовать XML-сериализацию и реализацию IXmlSerializable, который имеет методы для сериализации и десериализации, позволяя Вам управлять всем процессом...