我有一份現有持股的名單,我想將其列入另一份持股名單。我知道使用foreach & for循環是一個不好的方法,但我想不出使用LINQ修剪這種情況的好方法。有沒有更好的方法來做到這一點,也許用LINQ ish替換for/foreach循環?
private void CombineHoldings(List<Holding> holdingsToAdd, ref List<Holding> existingHoldings)
{
foreach (Holding holdingToAdd in holdingsToAdd)
{
Boolean found = false;
for (int i = 0; i < existingHoldings.Count; i++)
{
if (existingHoldings[i].Sector == holdingToAdd.Sector)
{
found = true;
existingHoldings[i].Percentage += holdingToAdd.Percentage;
}
}
if (!found)
existingHoldings.Add(holdingToAdd);
}
foreach (Holding holding in existingHoldings)
holding.Fund = "Combined Funds";
}
如果和for循環是路不好走,然後避開LINQ的,因爲LINQ的使用的foreach和在幕後循環。順便說一句 - 當'found = true'時,你應該在內部if循環中添加一個'break',否則,當你已經找到你的項目時,你將繼續迭代集合。 – 2012-04-27 23:52:26
你爲什麼通過ref列表? –
Robaticus
2012-04-27 23:52:55
可能重複的[合併兩個IEnumerable s](http://stackoverflow.com/questions/590991/merging-two-ienumerablets) –
Jason
2012-04-27 23:57:31