2012-08-01 75 views
1

我已經嘗試了很多解決方案,但沒有任何一個dem給我一個正確的答案。在表達式中檢查循環依賴關係

我有一個變量,它依賴於其他幾個變量,它們被稱爲操作數。有一個這樣的變量列表,每個變量都包含一個操作數列表。每次我創建新變量的表達式時,我想檢查是否存在循環依賴關係,如

A(或其任何操作數) - > B(或其任何操作數) - > C(或任何其操作數) - > d(或其任何操作數) - >一個

到目前爲止,我還拿出WID這

foreach (var newVar in newlyCreatedVars) 
      { 
       newVar.Rank = 0; 
       List<string> tags = newVar.Operands.ToList(); 
       List<string> temp; 
       while (tags.Count > 0) 
       { 
        var dependentVars= newlyCreatedVars.Where(t => tags.Contains(t.Name)).ToList(); 
        temp = new List<string>(); 
        tags.Clear(); 
        temp.AddRange(dependentVars.SelectMany(t => t.Operands).ToArray()); 
        if (temp.Count > 0) 
        { 
         newVar.Rank++; 
         tags = temp; 
        } 
        var dep = newlyCreatedVars.Where(t=> newVar .Operands.Contains(t.Name)).ToList(); 
        if(dep.Exists(t=> t.Rank > newVar .Rank)) 
         return false; 
       } 
      } 

請幫助。

謝謝:)

回答