gpt4 book ai didi

c# - Linq Groupby 返回原始对象

转载 作者:太空狗 更新时间:2023-10-30 01:00:05 25 4
gpt4 key购买 nike

我需要一些帮助来过滤一些数据。我有一个具有三个属性的对象类。我得到的对象集合可以与第一个属性 Point3d 有很多匹配项。从该匹配集合中,我需要查看第二个属性是否具有唯一值 Tag。最后,我需要能够识别 Point3d 匹配且标签不同的对象,使用第三个属性,它是 Id(它始终是唯一的)。

class pmatch
{
public string Point3d { get; set; }
public string Tag { get; set; }
public string Id { get; set; }
}

我正在寻找的一个例子是:

List<pmatch> dataset = new List<pmatch>
{
new pmatch { Point3d = "1, 1, 1", Tag = "5", Id = "123" },
new pmatch { Point3d = "1, 1, 1", Tag = "6", Id = "124" },
new pmatch { Point3d = "1, 1, 2", Tag = "7", Id = "125" },
new pmatch { Point3d = "1, 1, 2", Tag = "7", Id = "126" }
};

我需要能够识别 ID 的 123 和 124,因为它们的 Point3ds 匹配,但它们的标签不匹配。我已经能够使用 LINQ 识别这些实例:

var result = datalist.GroupBy(item => item.Point3d, item => item.Tag);
foreach (var group in result)
{
Console.WriteLine(group.Key);
var uniqueTags = group.Distinct().ToList();
if (uniqueTags.Count > 1)
{
Console.WriteLine("Found mismatched tags");
foreach (string Tag in group)
{
Console.WriteLine(" {0}", Tag);
}
}
}

但是这些结果没有给我 ID,所以我无法访问我已经识别的对象。我如何获得这些结果以及 Id 或 pmatch 对象本身?

最佳答案

你可以像这样完成想要的结果:

var resultSet = 
dataset.GroupBy(item => item.Point3d)
.Where(group => group.Select(item => item.Tag)
.Distinct()
.Count() > 1)
.ToDictionary(item => item.Key, item => item.ToList());

这将识别 Id 的 123124 ,因为他们的 Point3ds 匹配,但他们的标签不匹配,而且 resultSet类型为 Dictionary<string, List<pmatch>>所以你可以访问 pmatch 的所有属性对象。

关于c# - Linq Groupby 返回原始对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49614026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com