0

我有一个场景,我想搜索多个值和类似的值。例如:如果我有一个像

string[] codeValues={"Anthrax","anth","coliblex"};

我想搜索“%Anthrax%”或“%anth%”或“%coliblex%”。目前我有这个代码,它只返回与确切搜索值匹配的值。

string[] codeValues = {"anthrax"};
var obj=(from icdcodes in M_ICD_CPT_CODEs
where icdcodes.ROW_STATUS==1
      && icdcodes.FK_USER_ID==0
      && icdcodes.FK_CODE_TYPE_ID==240000     
      && codeValues.Contains(icdcodes.CHAR255)
      && icdcodes.MODULE_PHYS_PREF==0
select new 
{
  PkId=icdcodes.PK_ICD_CPT_CODE_ID,
  CodeValue=icdcodes.CODE_VALUE,
  Narrative = icdcodes.CHAR255
}).ToList();

Console.Write(obj);

有没有可以过滤的解决方案。等效的sql将是
CHAR255 LIKE '%anthrax%' 或 CHAR255 LIKE '%someothervalue%'..etc


谢谢

4

2 回答 2

1

您需要使用AnyContains

string[] codeValues = {"anthrax"};
var obj=(from icdcodes in M_ICD_CPT_CODEs
where icdcodes.ROW_STATUS==1
      && icdcodes.FK_USER_ID==0
      && icdcodes.FK_CODE_TYPE_ID==240000     
      && codeValues.Any(cv => icdcodes.CHAR255.Contains(cv))
      && icdcodes.MODULE_PHYS_PREF==0
select new 
{
  PkId=icdcodes.PK_ICD_CPT_CODE_ID,
  CodeValue=icdcodes.CODE_VALUE,
  Narrative = icdcodes.CHAR255
}).ToList();
于 2013-08-20T14:46:50.173 回答
1

尝试这个:

string[] codeValues = {"anthrax"};
var obj=(from icdcodes in M_ICD_CPT_CODEs
where icdcodes.ROW_STATUS==1
  && icdcodes.FK_USER_ID==0
  && icdcodes.FK_CODE_TYPE_ID==240000     
  && codeValues.Any(val => icdcodes.CHAR255.Contains(val))
  && icdcodes.MODULE_PHYS_PREF==0
select new 
{
  PkId=icdcodes.PK_ICD_CPT_CODE_ID,
  CodeValue=icdcodes.CODE_VALUE,
  Narrative = icdcodes.CHAR255
}).ToList();

LINQ:实体字符串字段包含任何字符串数组

于 2013-08-20T14:47:27.253 回答