次のメソッドにはLINQ文のみを使用します。私は文字列のリストを返しますが、最初にNetworkInterfaceのリストを取得します。LINQ、C#およびリストNetworkInterfaceを使用したリファクタリング
public static List<string> ObtenerDireccionesDeInterfacesDeRedActivos()
{
var listaDirecciones = new List<string>();
var interfacesActivos =
(from networkInterface in NetworkInterface.GetAllNetworkInterfaces()
let
/*IPv4InterfaceStatistics*/
statistics = networkInterface.GetIPv4Statistics()
where
// filter so we see only Internet adapters
networkInterface.OperationalStatus == OperationalStatus.Up
&& networkInterface.NetworkInterfaceType != NetworkInterfaceType.Tunnel
&& networkInterface.NetworkInterfaceType != NetworkInterfaceType.Loopback
// all testing seems to prove that once an interface comes online
// it has already accrued statistics for both received and sent...
&& (statistics.BytesReceived > 0) && (statistics.BytesSent > 0)
select
networkInterface).ToList<NetworkInterface>();
foreach (NetworkInterface nic in interfacesActivos)
{
var ips = nic.GetIPProperties().UnicastAddresses;
foreach (var ip in ips)
{
listaDirecciones.Add(ip.Address.ToString());
}
}
return listaDirecciones;
}
どのような提案ですか?
を返す、私は私にcdhowieの答え@好むが、あなたは 'リストを返すようにしたい場合'、私の解決策はうまくいくはずです。 –
Jacob