我有一个包含以下代码段的子操作:
public ActionResult MyAction()
{
var models = GetModelsFromDb();
var counts = new Dictionary<int, int>();
foreach (var model in models)
if (!counts.ContainsKey(model.Id))
counts.Add(model.Id, 0);
return View(count);
}
问题是...... Add
有时会抛出An item with the same key has already been added.
例外。
可能是并发问题?我不认为,因为代码是在子操作中,而字典是局部变量。
答案 0 :(得分:2)
你可以用linq这样做:
myList.GroupBy(x => x.id)
.Select(g => g.First());
之后,您可以快速计算您的数据:
var counts = models.Count();
修改1:
如果您因任何原因无法在方法中执行不同的操作:
var counts = models.Select(m => m.id).Distinct().Count()