在列表中查找一个属性包含重复值的对象

Joh*_*ohn 2 .net c# entity-framework

我有以下模型类:

public class DuplicateTags
{
    public string VMName { set; get; }
    public string shortName { set; get; }
}
Run Code Online (Sandbox Code Playgroud)

它的填充如下:

int tempindex = tempvmname.IndexOf('-');
duplicateTagsInDisplayName.Add(new DuplicateTags 
{ 
    VMName = tempvmname, 
    shortName = tempvmname.Substring(0, tempindex)
});
Run Code Online (Sandbox Code Playgroud)

现在我想显示具有重复shortName 的列表项?

Ham*_*jam 5

您可以使用 linq 获取重复值

var duplicateShortNames = duplicateTagsInDisplayName
    .GroupBy(x => x.shortName) // items with same shorName are grouped to gether
    .Where(x => x.Count() > 1) // filter groups where they have more than one memeber
    .Select(x => x.Key) // select shortName from these groups
    .ToList(); // convert it to a list
Run Code Online (Sandbox Code Playgroud)

然后您可以检查您的任何项目是否重复并显示它们

foreach (var item in duplicateTagsInDisplayName)
{
    if (duplicateShortNames.Contains(item.shortName))
        Console.WriteLine(item.VMName + item.shortName);
}
Run Code Online (Sandbox Code Playgroud)