首页 > 解决方案 > 通过标识符字符串从列表中删除重复元素(C#)

问题描述

我有将元素添加到列表的方法这是代码

 public static List<InputDevice> GetAudioInputDevices()
    {
        var inputs = new List<InputDevice>();
        var enumerator = new MMDeviceEnumerator();
        var devicesAudio = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.All);
        foreach (var device in devicesAudio)
        {
            inputs.Add(new InputDevice()
            {
                Name = device.FriendlyName,
                Status = device.State.ToString(),
                DeviceId = device.ID,
                Identifier = device.FriendlyName.Replace(" ", "").ToUpper()
            });
        }


        return inputs;
    }

但有时我可以在Identifier

如何在返回时返回没有重复的列表?

标签: c#asp.net.netasp.net-core

解决方案


最好的方法,我喜欢这个

    public static List<InputDevice> GetAudioInputDevices()
{
    var inputs = new List<InputDevice>();
    var enumerator = new MMDeviceEnumerator();
    var devicesAudio = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.All);
    inputs = devicesAudio.GroupBy(d => d.FriendlyName.Replace(" ", "").ToUpper()).Select(g => g.First())
        .Select(d => new InputDevice()
        {
            Name = d.FriendlyName,
            Status = d.State.ToString(),
            DeviceId = d.ID,
            Identifier = d.FriendlyName.Replace(" ", "").ToUpper()
        }).ToList();
    return inputs;
}

推荐阅读