假设我有一个类型为Value
的对象列表。 Value
有一个Name
属性:
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" },
};
现在我想获取所有“重复”的值的列表(名称属性与前一个元素的名称属性相同的元素)。 在这个例子中,我希望返回一个包含两个元素“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”解决方案。