問題是,列表< T>是一個引用類型。如果你的代碼:
Ids = s.Type.Equals(<Condition>) ? transModelIds : statModelIds;
你不要複製列表中,但使參考Ids
指向同一列表(一個或多個)。
要解決這個問題:
List<int> Ids = new List<int>();
var transModelIds = db.TableName.ToList();
var statModelIds = db.TableName1.ToList();
foreach (var user in metaData){
foreach(var s in someData){
Ids.Clear();
Ids.AddRange(s.Type.Equals(<Condition>) ? transModelIds : statModelIds);
/*... don't set the reference to the list but add the items from the source to your destination */
}
}
替代你也能建立在內環一個新的列表,如果你只在此範圍內需要它(如Jon的評論媒體鏈接建議我們不能沒有完整的工作幫助代碼):
var transModelIds = db.TableName.ToList();
var statModelIds = db.TableName1.ToList();
foreach (var user in metaData){
foreach(var s in someData){
List<int> ids = new List<int>();
ids.AddRange(s.Type.Equals(<Condition>) ? transModelIds : statModelIds);
/*... don't set the reference to the list but add the items from the source to your destination */
}
}
然而,你可以問自己一個問題是:
我需要臨時LIS t呢?
在這種情況下,只需像您一樣設置列表的引用,但不要清除它。
編輯
外部範圍:
var transModelIds = db.TableName.ToList();
var statModelIds = db.TableName1.ToList();
List<int> ids = null;
foreach (var user in metaData){
foreach(var s in someData){
ids = s.Type.Equals(<Condition>) ? transModelIds : statModelIds;
/*... additional code but don't modify the lists (clear or remove single items, etc...) ...*/
}
}
內部範圍:
var transModelIds = db.TableName.ToList();
var statModelIds = db.TableName1.ToList();
foreach (var user in metaData){
foreach(var s in someData){
List<int> ids = s.Type.Equals(<Condition>) ? transModelIds : statModelIds;
/*... additional code but don't modify the lists (clear or remove single items, etc...) ...*/
}
}
請顯示一個簡短但完整的程序來展示問題。目前我們沒有足夠的信息來幫助你。 –
請注意,[標籤:模型視圖控制器]是針對有關*模式*的問題;如果您的問題涉及ASP.NET實現,請使用[tag:asp.net-mvc]標籤。 –
@TiesonT。這並不是說這個問題與任何類型的MVC,模式都沒有任何關係。標籤刪除完全合適。 = D –