我有一個列表,其中包含3個項目,兩個type_1和一個type_2。我想返回第二個列表,其中包含存在的類型和編號。當逐步遍歷在foreach循環處設置的斷點時,IF語句永遠不會成立。我假設我嘗試使用Contains()方法時出現問題。使用Contains()列表方法評估列表內容
輸出應該是這樣的:
type_1 2
type_2 1
相反,它的計算結果爲:
type_1 1
type_1 1
type_2 1
是我使用包含()不正確嗎?
public List<item_count> QueryGraphListingsNewAccountReport()
List<item> result = new List<items>();
var type_item1 = new item { account_type = "Type_1" };
var type_item2 = new item { account_type = "Type_1" };
var type_item3 = new item { account_type = "Type_2" };
result.Add(type_item1);
result.Add(type_item2);
result.Add(type_item3);
//Create a empty list that will hold the account_type AND a count of how many of that type exists:
List<item_count> result_count = new List<item_count>();
foreach (var item in result)
{
if (result_count.Contains(new item_count { account_type = item.account_type, count = 1 }) == true)
{
var result_item = result_count.Find(x => x.account_type == item.account_type);
result_item.count += 1;
result_count.Add(result_item);
}
else
{
var result_item = new item_count { account_type = item.account_type, count = 1 };
result_count.Add(result_item);
}
}
return result_count;
}
public class item
{
public string account_type { get; set; }
}
public class item_count
{
public int count {get; set;}
public string account_type { get; set; }
}
這個伎倆!非常感謝!目前,我將使用這種方法,因爲這只是一個概念證明,所以規模相當小,但我會考慮稍後實施Saeed的linq使用 – aeternus828 2012-08-13 20:41:23