我是 linq 的新手,想用它来获取 iOS 设备的 IP 地址。我想知道是否有人发现这种方法有任何问题(基于此 How do I get the network interface and its right IPv4 address? ),或者是否有更好/更紧凑/更干净的方法来做到这一点。
// get my IP
string ip = NetworkInterface.GetAllNetworkInterfaces()
.Where(x => x.Name.Equals("en0"))
.Select(n => n.GetIPProperties().UnicastAddresses)
.Where(x => x.First().Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
.Select(x => x.First().Address.ToString());
最佳答案
我认为您的代码的问题在于最后的Select
。
Where
选择器已经返回一个 IEnumerable
,这意味着此时您有一个 UnicastIPAddressInformationCollection
的 IEnumerable
。然后在这一点上,只需选择第一个并指向地址属性并使用以下方法转换为字符串:.First().Address.ToString()
这是一个为我完成工作的例子:
public string IpEndPoint
{
get
{
return NetworkInterface.GetAllNetworkInterfaces()
.Where(ni => ni.Name.Equals("en0"))
.First().GetIPProperties().UnicastAddresses
.Where(add => add.Address.AddressFamily == AddressFamily.InterNetwork)
.First().Address.ToString();
}
}
关于c# - 通过 linq 在 iphone 中的 Monotouch/Xamarin 上获取 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17843925/