我想要做的是在 searchValues 列表中搜索重复的 itemId,当我找到它们时,将单个字符串值放入字符串值数组中。
SearchValue 对象:
public class SearchValue<TItemId>
{
public TItemId ItemId { get; set; }
public string Value { get; set; }
public string[] Values { get; set; }
}
init 后我的测试搜索值如下所示:
searchValues[0]
.ItemId == 16
.Value == "2"
searchValues[1]
.ItemId == 16
.Value == "3"
searchValues[2]
.ItemId == 15
.Value == "6"
searchValues[3]
.ItemId == 15
.Value == "3"
searchValues[4]
.ItemId == 5
.Value == "Vertonghen"
我希望我的最终结果如下所示:
searchValues[0]
.ItemId == 16
.Values == "2,3"
searchValues[1]
.ItemId == 15
.Values == "6,3"
searchValues[2]
.ItemId == 5
.Value == "Vertonghen"
我真的很想使用 LINQ 来做到这一点。因此,我设法创建了另一个 SearchValue 列表:
List<SearchValue<Byte>> duplicateSearchItems = (from x in searchValues
group x by x.ItemId into grps
orderby grps.Key
where grps.Count() > 1
select grps).SelectMany(group => group).ToList();
...但是将值放入 values 数组给我带来了麻烦。理想情况下,如果 LINQ 可以返回一个包含重复记录的列表,该列表包含被变形到数组中的重复记录,且非重复项完整无缺。可能是某种嵌套查询?我难住了。有任何想法吗?
提前致谢!