У меня есть этот метод linq, как получить все свойства сетевой карты компьютера, и я не хочу использовать linq, могу ли я помочь его конвертировать и не использовать Linq?Convert Linq to regular function
public NetworkAdapter[] GetAll()
{
return (from adapter in NetworkInterface.GetAllNetworkInterfaces()
from uniCast in adapter.GetIPProperties().UnicastAddresses
where !System.Net.IPAddress.IsLoopback(uniCast.Address) && uniCast.Address.AddressFamily != AddressFamily.InterNetworkV6
let lastGatewayAddress = adapter.GetIPProperties().GatewayAddresses.LastOrDefault()
select new NetworkAdapter()
{
string Name = adapter.Name,
string ID = adapter.Id,
string Description = adapter.Description,
string IPAddress = uniCast.Address.ToString(),
string NetworkInterfaceType = adapter.NetworkInterfaceType.ToString(),
string Speed = adapter.Speed.ToString("#,##0"),
string MacAddress = getMacAddress(adapter.GetPhysicalAddress().ToString()),
string gatewayIpAddress = string.Join(" ", adapter.GetIPProperties().GatewayAddresses.Select(a => a.Address))
}).ToArray();
}
Это то, что я попробовал;
public void get()
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
Description = adapter.Description;
Name = adapter.Name;
MacAddress = adapter.GetPhysicalAddress().ToString();
IPInterfaceProperties ips = adapter.GetIPProperties();
UnicastIPAddressInformationCollection uniCast = ips.UnicastAddresses;
foreach (UnicastIPAddressInformation ipInfo in uniCast)
{
if (ipInfo.Address.AddressFamily != AddressFamily.InterNetworkV6)
{
}
}
}
}
Почему бы вы ** не ** хотите использовать Linq, если он делает ваш код проще? –
Я взял этот код отсюда и хочу узнать, как его преобразовать, а не использовать Linq – user2214609
@Shaul - Потому что иногда это не так. Linq отлично, но если вы не привыкли к этому, требуется некоторое время, чтобы понять, что происходит. Также вы не можете поставить контрольные точки «внутри» операторов Linq. (Или вы можете?) – Corak