Я использую LINQ-SQL как свой DAL, у меня тогда есть проект под названием DB, который действует как мой BLL. Затем различные приложения получают доступ к BLL для чтения/записи данных из базы данных SQL.В чем разница между этими запросами LINQ?
У меня есть эти методы в моем BLL для одной конкретной таблицы:
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();
}
Все довольно прямо вперед, я думал.
Get_SystemSalesTaxListByZipCode
всегда возвращает нулевое значение, даже если у него есть почтовый индекс, который существует в этой таблице.
Если я пишу метод, как это, он возвращает строку, я хочу:
public SystemSalesTaxList Get_SystemSalesTaxListByZipCode(string strZipCode)
{
var salesTax = from s in db.SystemSalesTaxLists
where s.ZipCode == strZipCode
select s;
return salesTax.FirstOrDefault();
}
Почему другой метод не возвращает то же самое, как запрос должен быть идентичен?
Обратите внимание, что перегруженный Get_SystemSalesTaxList(string strSalesTaxID)
возвращает запись просто отлично, когда я даю ей действительный SalesTaxID
.
Есть ли более эффективный способ написать эти классы типа «помощник»?
Спасибо!
Тупой вопрос - уверены ли вы, что вы передаете ZipCode в 'Get_SystemSalesTaxListByZipCode'? – Oded
Проблема в том, что идентифицируется «IEnumerable» - но я просто кричу, чтобы сказать «это, вероятно, это способ жаловаться на венгерскую нотацию» ;-p –