我解析XML數據從文件導入到這個類的對象列表:讀取XML正確,但爲了得到更高混亂
public class VerificationSample
{
public double DesiredA { get; set; }
public double DesiredB { get; set; }
public double DesiredC { get; set; }
// ..
public void ReadXml(XmlReader reader)
{
reader.ReadToFollowing("VerificationSample");
this.DesiredA = (double)FileStructure.GetAttributeSafe(reader, "DesiredA", typeof(double));
this.DesiredB = (double)FileStructure.GetAttributeSafe(reader, "DesiredB", typeof(double));
this.DesiredC = (double)FileStructure.GetAttributeSafe(reader, "DesiredC", typeof(double));
this.ReferenceNumber = (int)FileStructure.GetAttributeSafe(reader, "ReferenceNumber", typeof(int));
// ..
}
}
我讀這個示例XML:
<VerificationSamples Count="4">
<VerificationSample DesiredA="0.000" DesiredB="50.000" DesiredC="0.000" ReferenceNumber="0"/>
<VerificationSample DesiredA="75.000" DesiredB="-3.000" DesiredC="0.000" ReferenceNumber="0"/>
<VerificationSample DesiredA="-30.000" DesiredB="0.000" DesiredC="0.000" ReferenceNumber="1"/>
<VerificationSample DesiredA="-2.000" DesiredB="-60.000" DesiredC="0.200" ReferenceNumber="1"/>
</VerificationSamples>
使用此例行程序:
public void LoadFromFile(string path)
{
XmlReader reader = XmlReader.Create(path);
// ..
reader.ReadToFollowing("VerificationSamples");
int count = (int)FileStructure.GetAttributeSafe(reader, "Count", typeof(int));
this.VerificationSamples.Clear();
for (int i = 0; i < count; i++)
{
VerificationSample newVerificationSample = new VerificationSample();
newVerificationSample.ReadXml(reader);
this.VerificationSamples.Add(newVerificationSample);
}
}
目前爲止所有的東西都很好,並且像魅力一樣。然而,後來當我執行另一個函數,嘗試訪問我的VerificationSamples
列表以使用我的對象的某些值時,對象的順序變得混亂......因此xml中的第一行(是第一個對象),但後來它是第3個.. 2nd是1st .. 4th是2nd等(沒有明顯的模式)。有沒有人想象爲什麼?
這是因爲它只是從列表中隨意獲取對象 - 您將需要使用'.OrderBy(x => x.SomeValue)'以特定順序返回它們 –
@Geoff它從不隨機抓取xml行。它總是從第一行開始 - >添加對象,第二行 - >添加對象..等等。我多次觀看它。如果是這樣的話,你會如何解決你的觀點? –
你是對的 - 它會依次獲取XML行 - 但是當你從內存中迭代/獲取列表時,內存中的「list」('VerificationSamples'?)將需要對一個值進行排序;否則訂單將顯得「隨機」 –