首页 > 解决方案 > 使用 linq 在列表中的对象内发现重复变量,然后在所述对象中使用另一个变量,其中包含重复的 objectId

问题描述

我是 linq 的新手,我已经尝试过这个应该检查重复项的功能。我想要做的是检查我的建筑对象列表,以检查是否有任何建筑对象包含与列表中另一个建筑对象相同的 objectID。最后我想使用重复的 buildingObject 的 GUID,并将其打印到我的日志中供用户查看。

public class FMBuildingObject
{
    public Int64 ObjectId { get; set; }

    public string GUID { get; set; }
}

建筑对象更大,但这是我正在使用的值。接下来我尝试使用 buildingobjects,查找重复项,然后将 GUID 打印出来。但是我不知道如何访问该 GUID。

var query =
buildingObjects
    .GroupBy(x => new { x })
    .Select(group => new { Name = group.Key, Count = group.Count() })
    .OrderByDescending(x => x.Count);


foreach (var q in query)
{
    var updateLog = new LogServiceModel()
    {
        LogType = LogTypes.Warning, Parameters = { {?GUID?}}, LogTitle = "You have used two different classifications on a same Buildingobject in {0}. "
    };

    logService.Create(updateLog);
}

标签: c#.netlinqduplicates

解决方案


这将返回一个List<string>包含具有重复ObjectId's 的对象的 GUID:

var result = buildingObjects
    .GroupBy(b => b.ObjectId)
    .Where(g => g.Count() > 1)
    .SelectMany(g => g.Select(b => b.GUID)).ToList();

推荐阅读