Utilizo LINQ-SQL como mi DAL, luego tengo un proyecto llamado DB que actúa como mi BLL. Varias aplicaciones luego acceden al BLL para leer/escribir datos de la base de datos SQL.¿Cuál es la diferencia entre estas consultas LINQ?
que tienen estos métodos en mi BLL para una tabla en particular:
public IEnumerable<SystemSalesTaxList> Get_SystemSalesTaxList()
{
return from s in db.SystemSalesTaxLists
select s;
}
public SystemSalesTaxList Get_SystemSalesTaxList(string strSalesTaxID)
{
return Get_SystemSalesTaxList().Where(s => s.SalesTaxID == strSalesTaxID).FirstOrDefault();
}
public SystemSalesTaxList Get_SystemSalesTaxListByZipCode(string strZipCode)
{
return Get_SystemSalesTaxList().Where(s => s.ZipCode == strZipCode).FirstOrDefault();
}
Todo bastante sencillo que pensaba.
Get_SystemSalesTaxListByZipCode
siempre devuelve un valor nulo, incluso cuando tiene un código postal que existe en esa tabla.
Si escribo el método como este, devuelve la fila que quiero:
public SystemSalesTaxList Get_SystemSalesTaxListByZipCode(string strZipCode)
{
var salesTax = from s in db.SystemSalesTaxLists
where s.ZipCode == strZipCode
select s;
return salesTax.FirstOrDefault();
}
¿Por qué otro método no producen el mismo resultado, ya que la consulta debe ser idéntico?
Tenga en cuenta que, el Get_SystemSalesTaxList(string strSalesTaxID)
sobrecargado devuelve un registro muy bien cuando le doy un SalesTaxID
válido.
¿Existe alguna manera más eficiente de escribir estas clases de tipo "ayuda"?
Gracias!
estúpida pregunta - ¿está seguro de que está pasando el Código Postal a 'Get_SystemSalesTaxListByZipCode'? – Oded
El problema es, como se identificó, el 'IEnumerable' - pero solo estoy gritando para decir "es probable que sea una forma de queja sobre la notación húngara"; p –