C#合并2个IP列表
我使用这个模型:C#合并2个IP列表,c#,linq,merge,C#,Linq,Merge,我使用这个模型: public class IPList { public List<string> websites { get; set; } public int total_websites { get; set; } public string ip { get; set; } } 我想要一个新列表,其中包含范围104.130.124.x(104.130.124.0到104.130.124.255)内的所有IP 我所做的: List<IPLi
public class IPList
{
public List<string> websites { get; set; }
public int total_websites { get; set; }
public string ip { get; set; }
}
我想要一个新列表,其中包含范围104.130.124.x
(104.130.124.0到104.130.124.255
)内的所有IP
我所做的:
List<IPList> NewIPList = new List<IPList>();
for (int i = 0; i < 255; i++)
{
string TempIP = "104.130.124." + i;
IPListTake10 TempIpList = IPList.Where(p => p.ip == TempIP).FirstOrDefault();
if (TempIpList != null)
{
NewIPList.Add(new IPList{ ip = TempIP, total_websites = TempIpList.total_websites, websites = TempIpList.websites });
}
else
{
NewIPList.Add(new IPList{ ip = TempIP, total_websites = 0});
}
}
List NewIPList=newlist();
对于(int i=0;i<255;i++)
{
字符串TempIP=“104.130.124.”+i;
IPListTake10 TempIpList=IPList.Where(p=>p.ip==TempIP.FirstOrDefault();
if(TempIpList!=null)
{
添加(新IPList{ip=TempIP,total_网站=tempilist.total_网站,websites=tempilist.websites});
}
其他的
{
添加(新IPList{ip=TempIP,total_websites=0});
}
}
有更好的方法吗
也许可以使用以下方法之一:
- 列表和LINQ合并
- 字典合并
- HashSet和IEqualityComparer
- LINQ联盟和IEqualityComparer
var IPList = new List<IPList>() { new IPList() {ip="104.130.124.10", total_websites=10}};
var NewIPList = Enumerable.Range(0, 256)
.Select(x => $"104.130.124.{x}")
.Select(x => IPList.FirstOrDefault(z => z.ip == x) ?? new IPList() {ip=x, total_websites=0})
.ToList();
var-IPList=newlist(){new-IPList(){ip=“104.130.124.10”,total_-websites=10};
var NewIPList=Enumerable.Range(0,256)
.选择(x=>$“104.130.124.{x}”)
.Select(x=>IPList.FirstOrDefault(z=>z.ip==x)??新建IPList(){ip=x,total_=0})
.ToList();
您可以尝试以下操作
var IPList = new List<IPList>() { new IPList() {ip="104.130.124.10", total_websites=10}};
var NewIPList = Enumerable.Range(0, 256)
.Select(x => $"104.130.124.{x}")
.Select(x => IPList.FirstOrDefault(z => z.ip == x) ?? new IPList() {ip=x, total_websites=0})
.ToList();
var-IPList=newlist(){new-IPList(){ip=“104.130.124.10”,total_-websites=10};
var NewIPList=Enumerable.Range(0,256)
.选择(x=>$“104.130.124.{x}”)
.Select(x=>IPList.FirstOrDefault(z=>z.ip==x)??新建IPList(){ip=x,total_=0})
.ToList();
为什么不NewIPList=IPList.Where(x=>x.ip.StartsWith(“104.130.124”).ToList()
?我能发现的第一件事是,删除total_网站的setter并在getter中使用网站。为什么不在ip
属性中使用IPAddress
而不是String
?为什么不NewIPList=IPList.Where(x=>x.ip.StartsWith(“104.130.124”).ToList()
?我能发现的第一件事是,删除total_网站的setter并在getter中使用网站。为什么不使用IPAddress
而不是String
作为ip
-属性?谢谢,看起来比我的解决方案好!谢谢,看起来比我的解决方案好!