我們假設我有一個包含Value
類型對象的列表。 Value
有一個Name
屬性:使用Linq查找連續重複元素
private List<Value> values = new List<Value> {
new Value { Id = 0, Name = "Hello" },
new Value { Id = 1, Name = "World" },
new Value { Id = 2, Name = "World" },
new Value { Id = 3, Name = "Hello" },
new Value { Id = 4, Name = "a" },
new Value { Id = 5, Name = "a" },
};
現在,我想所有的名單「重複」值(其中name屬性是與前一個元素的name屬性相同的元素)。
在這個例子中,我想要返回兩個元素「world」和「a」(id = 2和5)的列表。
這個事件可能與linq? 當然,我可以如此卑鄙。像這樣:
List<Value> tempValues = new List<Value>();
String lastName = String.Empty();
foreach (var v in values)
{
if (v.Name == lastName) tempValues.Add(v);
lastName = v.Name;
}
但由於我想在更復雜的上下文中使用此查詢,也許有一個「linqish」解決方案。
這是更高效的Zip方法。但我發現Zip方法讀得更好一些(其清晰度更好) – 2009-06-18 12:39:54
+1,這是一個很好的答案 – 2009-06-18 12:40:28
工程就像一個魅力 – 2009-06-18 12:52:33