使用C#中Dynamic Linq中的"Contains"关键字查询数据

ven*_*kat 14 c# linq dynamic

我在C#中执行动态linq中包含'Contains'关键字的查询时遇到了一些问题.我收到以下错误

"Int32"类型中不存在任何属性或字段

我的代码如下:

如果我为数据类型字符串字段使用'Contains'关键字,那么它可以正常工作,如下所示

string[] CandidateNamesArray = new string[]{"Ram", "Venkat", "Micheal"}
var dynamicLinqQuery = Candidates.Where("CandidateName.Contains(@0)", CandidateNamesArray );
Run Code Online (Sandbox Code Playgroud)
  • 工作良好

但是如果我对数据类型int字段使用'Contains'关键字,那么它会抛出异常,如下所示

int[] CandidateIdsArray = new int[]{4, 78, 101}
var dynamicLinqQuery = Candidates.Where("CandidateId.Contains(@0)", CandidateIdsArray);
Run Code Online (Sandbox Code Playgroud)

运行时异常 - "类型'Int32'中不存在适用的方法'包含'"

也尝试以下面的另一种方式

int[] CandidateIdsArray = new int[]{4, 78, 101}
var dynamicLinqQuery = Candidates.Where("@0.Contains(CandidateId)", CandidateIdsArray);
Run Code Online (Sandbox Code Playgroud)

运行时异常 - "类型'Int32'中不存在属性或字段'CandidateId'"

我花了将近2天的时间来解决上述问题,但无法成功.任何人都可以帮我解决上述问题......在此先感谢

Ric*_*lff 8

我知道你的帖子已经很久了,但我今天遇到了同样的问题.

我outerIt在里面的属性之前解决了它Contains.

在你的例子中:

int[] CandidateIdsArray = new int[]{4, 78, 101}
var dynamicLinqQuery = Candidates.Where("@0.Contains(outerIt.CandidateId)", CandidateIdsArray);
Run Code Online (Sandbox Code Playgroud)

它对我有用,因为DynamicLinq认为CandidateId是数组对象的属性.并且使用outerIt使它理解它指的是外部迭代器,它是候选者.

  • "outerIt"在旧版本的库中不起作用.确保你使用的是新手 (2认同)

Ale*_*lex 1

您可以使用将数组转换为字符串,然后使用 Contains() 将其转换回 int