diff --git a/src/PhoneNumbers/PhoneNumber.cs b/src/PhoneNumbers/PhoneNumber.cs
index d50c8ccb..efe4c048 100644
--- a/src/PhoneNumbers/PhoneNumber.cs
+++ b/src/PhoneNumbers/PhoneNumber.cs
@@ -216,4 +216,12 @@ public override string ToString() =>
/// The string representation of the value of this instance as specified by the format.
public string ToString(string format) =>
CountryInfo.GetFormatter(format).Format(this);
+
+ ///
+ /// Gets a value indicting whether this shares a national destination code with the specified .
+ ///
+ /// The to compare against.
+ /// True if the both phone numbers share a national destination code, otherwise false.
+ internal bool SharesNdcWith(PhoneNumber phoneNumber) =>
+ NationalDestinationCode?.Equals(phoneNumber.NationalDestinationCode, StringComparison.Ordinal) == true;
}
diff --git a/test/PhoneNumbers.Tests/PhoneNumberTests.cs b/test/PhoneNumbers.Tests/PhoneNumberTests.cs
index 2cd628c1..b1c1efd6 100644
--- a/test/PhoneNumbers.Tests/PhoneNumberTests.cs
+++ b/test/PhoneNumbers.Tests/PhoneNumberTests.cs
@@ -166,6 +166,29 @@ public void Parse_Value_With_Custom_ParseOptions()
Assert.Equal("The value '+441142726444' could not be successfully parsed into a phone number for any country enabled in ParseOptions.", exception.Message);
}
+ [Fact]
+ public void SharesNdcWith()
+ {
+ var phoneNumber1 = TestHelper.CreateGeographicPhoneNumber(
+ trunkPrefix: default,
+ ndc: "12345",
+ sn: "667788");
+
+ var phoneNumber2 = TestHelper.CreateGeographicPhoneNumber(
+ trunkPrefix: default,
+ ndc: "12345",
+ sn: "667788");
+
+ Assert.True(phoneNumber1.SharesNdcWith(phoneNumber2));
+
+ var phoneNumber3 = TestHelper.CreateGeographicPhoneNumber(
+ trunkPrefix: default,
+ ndc: "12346",
+ sn: "667788");
+
+ Assert.False(phoneNumber1.SharesNdcWith(phoneNumber3));
+ }
+
[Fact]
public void ToString_Returns_Default_Formatted_PhoneNumber()
{