我们假设我有一个包含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