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);