C# 联接列表<类型>和处理空值/空值



我有两个要加入的列表。列表1包含子网中的所有IP,列表2包含分配的IP。

这两个列表的结构相同。以下示例(删除了额外字段(:

int IPAddress
int AssingmentType

在列表1中;分配类型";将始终为空,但在列表2中,两个字段都将被填充,但只有一个用于分配的IP。我想生成一个完整的IP列表,并将其与列表2连接,在分配IP时显示。

我正在使用LINQ进行此操作,到目前为止有以下

var results = from t1 in allIPinNetwork
join t2 in assignedIPs on t1.IPAddressText equals t2.IPAddressText into combinedIP
from t3 in combinedIP.DefaultIfEmpty()
select new IPAddress()
{
IpAddressText = t1.IpAddressText,
AssingmentType = t3 == null ? 0 : t3.AssingmentType,
};

我的问题是,我该如何最好地处理";空";AssingmentType的值?在这种情况下,我已经将它们设置为0,但是否有一个空值可以用来将它们留空?在完整类中,还会有一些字符串字段可能为空。

如果有人能找到更好的方法,我会高兴吗?

感谢

这两个列表具有相同的结构。

好吧,这就是问题所在,它们似乎没有你认为的结构。如果列表可以有空的AssignmentType字段,那么AssignmentType就不能是int类型;int必须始终是一个值。

你可能想要的是,这两个列表都有以下结构:

int IPAddress
int? AssignmentType

是的,当未设置AssignmentType时,它应该是null

另一种选择可能是将AssignmentType更改为枚举:

enum IPAssignmentType
{
NotAssigned,
Dynamic,
Static,
//whatever
}

我的最后一个选择是使用-1作为未设计的值,但如果可以避免的话,那就太糟糕了(它本质上与枚举相同,但更丑陋,更不易维护(。

最新更新