Tengo un número de teléfono (cadena) que es "98574524521322". Necesito saber a qué país pertenece este número de teléfono mirando el código de país.
Tengo 2 tablas que son TelephoneMerchant y TelephoneCode . Nota: un comerciante telefónico puede tener varios códigos telefónicos. Nota: Los primeros 2 o 4 dígitos en el número de teléfono es el Code de teléfono, que se encuentra en la tabla de códigos de TelephoneCodes .
Pregunta: ¿Quiero escribir una consulta LINQ para verificar quién es el telephone merchant para el número de teléfono "98574524521322"? Mis trabajos:
_dbContext.TelephoneCodes.Where(c => c.Code.ToString().StartsWith("")).FirstOrDefault(c=> c.MerchantName); La consulta anterior no funciona porque no estoy seguro de cómo usar StartsWith (o si StartsWith es el método correcto para usar).
Los archivos se dan a continuación. ¿Alguien puede ayudarme a resolver esto?
public class TelephoneCode: Entity { public int Code { get; set; } public int TelephoneMerchantId { get; set; } public TelephoneMerchant? TelephoneMerchant{ get; set; } } public class TelephoneMerchant: Entity { public string? MerchantName { get; set; } public ICollection<TelephoneCode> TelephoneCodes { get; set; } }como se ven las mesas
Id TelephoneMerchant MerchantName =================================== 1 ABC ABCMErchant 2 BBB BBB MErcrchat Id Code TelephoneMerchantId ================================== 1 10 1 2 98 1 3 1023 2Esto debería funcionar:
string phoneNumber = "98574524521322"; IEnumerable<string> matchingMerchants = _dbContext.TelephoneCodes .Where(c => phoneNumber.StartsWith(c.Code.ToString())) .Select(c=> c.TelephoneMerchant?.MerchantName) .ToList();Ahora lo tienes todo en una lista. Si realmente solo quieres uno, también puedes usar:
string matchingMerchant = _dbContext.TelephoneCodes .FirstOrDefault(c => phoneNumber.StartsWith(c.Code.ToString())?.TelephoneMerchant?.MerchantName; Pero realmente guardaría el Code en una String .