Я хотел бы использовать запрос в LINQ и использовать функцию, которая работает как «LIKE» в TSQL. Например:Запрос Linq с использованием contains не работает
SELECT salary
FROM employees
WHERE last_name LIKE 'R%';
Я пытаюсь сделать запрос в LINQ к БД Oracle. Запрос, кажется, работает очень хорошо, когда я не использую .Contains(), и когда я его добавляю, я получаю 0 записей назад. Я не уверен, что Contains() - правильный метод для этого. Вот мой LINQ код:
var queryOracle = (from TS in dbOracle.BI_TYPE_SERVICE
join MS in dbOracle.BI_MTR_SRV on TS.BI_ACCT equals MS.BI_ACCT
join SL in dbOracle.BI_SRV_LOC on MS.BI_SRV_LOC_NBR equals SL.BI_SRV_LOC_NBR
join C in dbOracle.BI_CONSUMER on TS.BI_ACCT equals C.BI_ACCT
join P in dbOracle.BI_PERSONAL on C.BI_CUST_NBR equals P.BI_CUST_NBR
join STR in dbOracle.BI_SRV_STAT_REF on TS.BI_SRV_STAT_CD equals STR.BI_SRV_STAT_CD
where P.BI_FORMAT_NAME.Contains("Tom")
select new
{
LocationID = SL.BI_SRV_MAP_LOC,
MeterNumber = MS.BI_MTR_NBR,
AccountNumber = TS.BI_ACCT,
ServiceStatCD = TS.BI_SRV_STAT_CD,
ServiceStatus = STR.BI_SRV_STAT_DESC,
Name = P.BI_FORMAT_NAME,
ServiceAddr = SL.BI_ADDR1,
ServiceCity = SL.BI_CITY,
CustomerNumber = C.BI_CUST_NBR,
ServiceCNTY = SL.BI_CNTY_CD,
ServiceTOWN = SL.BI_TOWN_CD,
HomeAreaCode = P.BI_HOME_AREA_CD,
HomePhone = P.BI_HOME_PHN,
BusAreaCode = P.BI_BUS_AREA_CD,
BusPhone = P.BI_BUS_PHN,
MobileAreaCode = P.BI_MOBL_AREA_CD,
MobilePhone = P.BI_MOBL_PHN
}).Take(10);
'Содержит()' должен работать, хотя это может быть слишком много. Для этого шаблона вы должны использовать 'StartsWith()'. Хотя, неважно, если вы не получите никаких результатов. Вы уверены, что есть соответствующие строки для каждой из этих объединенных таблиц? –
Спасибо, Джефф, у него есть соответствующие строки, и он работает сейчас. – CesarD