(高度簡化的例子) 我有一個字符串泛型列表:根據條件對通用列表進行「拆分」的最有效和最易讀的方法是什麼?
var strings = new List<string> { "abc", "owla", "paula", "lala", "hop" };
我在尋找最有效的方式向此列表分割成一個列表與滿足的條件和元素列表元素不符合相同的條件。
Func<string, bool> condition = s => s.IndexOf("o") > -1;
Predicate<string> kickOut = s => s.IndexOf("o") > -1;
var stringsThatMeetCondition = strings.Where(condition);
strings.RemoveAll(kickOut);
var stringsThatDontMeetCondition = strings;
有沒有辦法通過原始列表循環一次?
'Where'擴展方法調出'IEnumerable',但'RemoveAll'是就地操作。因此,您正在比較根本不同的操作。什麼是「寫作效率」?簡潔,簡潔,容易理解?你沒有說清楚。 –
spender
2011-05-23 13:23:33
要非常小心地改變你有一個非實體化查詢的列表。 LINQ的推遲性質使得這不適用(儘管你的例子*應該可以) – spender 2011-05-23 13:26:50
什麼是簡明的?什麼是簡潔? :)(我不是母語英語) 我的意思是容易閱讀/理解。 我的代碼現在是否正確? – TweeZz 2011-05-23 13:31:49