2022/12/21

C#.Net 取得本機第一張真實網路卡

var ipAddress = NetworkInterface.GetAllNetworkInterfaces().Where(_ =>
            //過濾網路卡已啟動 且 介面為乙太網路卡和無線網路卡協議 且 不等於虛擬網卡
            (_.NetworkInterfaceType == NetworkInterfaceType.Ethernet || _.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) &&
            _.OperationalStatus == OperationalStatus.Up &&
            !_.Description.Contains("Virtual"))
                .Select(_ => _.GetIPProperties())
                .SelectMany(_ => _.UnicastAddresses)
                //篩選掉IPv6地址
                .Where(_ => _.Address.AddressFamily != System.Net.Sockets.AddressFamily.InterNetworkV6)
                //確保不是空值
                .ToList()
                .FirstOrDefault(_ => _ != null, null);