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
-属性?谢谢,看起来比我的解决方案好!谢谢,看起来比我的解决方案好!