gpt4 book ai didi

c# - 是否有 Linq 操作从项目列表中检索特定项目,其中项目具有应该唯一的属性的属性值?

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:42 25 4
gpt4 key购买 nike

我有一个 List<>自定义对象。此自定义类型具有名为 Name 的属性在列表中应该是唯一的。换句话说,列表中没有 2 个项目的 Name 值不应该相同。属性(property)。

当我验证这个列表时,我想检索有问题的项目。是否有允许我执行此操作的 Linq 操作?

我想要一个类似的东西

listOfItems.Where(x => x.Name.Equals(/*anything else in this list with the same value for name */)

基本上,我试图避免针对列表中的每个项目检查整个列表(在嵌套的 foreach 中):

private IList<ICustomObject> GetDuplicatedTypeNames(IList<ICustomObjects> customObjectsToFindDuplicatesIn)
{
var duplicatedList = new List<ICustomObject>();

foreach(var customObject in customObjectsToFindDuplicatesIn)
foreach(var innerCustomObject in customObjectsToFindDuplicatesIn)
if (customObject == innerCustomObject && customObject .Name.Equals(innerCustomObject.Name))
duplicatedList.Add(customObject);

return duplicatedList;
}

(编辑)注意:我被域规则限制为使用 List<> 并且使用 Dictionary<> 不是一个选项。

最佳答案

获取重复的名字:

 var duplicates = listOfItems
.GroupBy(i => i.Name)
.Where(g => g.Count() > 1)
.Select(g => g.Key);

编辑:获取重复项:

var duplicates = listOfItems
.GroupBy(i => i.Name)
.Where(g => g.Count() > 1)
.SelectMany(g => g);

关于c# - 是否有 Linq 操作从项目列表中检索特定项目,其中项目具有应该唯一的属性的属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728670/

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