gpt4 book ai didi

c# - 使用包含的 Linq 查询不起作用

转载 作者:行者123 更新时间:2023-11-30 20:21:04 25 4
gpt4 key购买 nike

我想在 LINQ 中使用查询并在 TSQL 中使用类似于“LIKE”的函数。例如:

 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);

最佳答案

Contains 应该在检查子字符串时起作用。等于执行sql语句where BI_FORMAT_NAME LIKE '%Tom%'

但是如果需要记录LIKE 'Tom%'条件,可以使用StartsWith方法。

where  P.BI_FORMAT_NAME.StartsWith("Tom")

只要不带 where 子句的 LINQ 查询返回的记录的 BI_FORMAT_NAME 列的值如 "Tom"“TomSomeThingElse”

针对不同 SQL like 子句用例的 LINQ 方法是

  1. LIKE '%To%' --> 包含("To")
  2. LIKE 'Tom%' --> StartsWith("Tom")
  3. LIKE '%Tom' --> EndsWith("Tom")

关于c# - 使用包含的 Linq 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34777044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com