我有一个场景,我想搜索多个值和类似的。 例如: 如果我有一个类似
的序列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喜欢'%炭疽%'或CHAR255喜欢'%someothervalue%'..等等
感谢
答案 0 :(得分:1)
您需要使用Any
和Contains
。
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();
答案 1 :(得分: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: Entity string field contains any of an array of strings