【问题标题】:Dynamic Where Clause in LINQ Syntax errorLINQ 语法错误中的动态 Where 子句
【发布时间】:2019-02-02 21:39:57
【问题描述】:

我正在尝试在我的 LINQ 语句中构建动态 WHERE 子句,但是遇到了一些问题。

目前我有以下内容:-

string[] types = typeId[0].Split(','); //contains string array like {"1,2,3"}
marketing = marketing.Where( type => types.Contains(type.TypeID)).ToList();

谁能告诉我实现这一点的正确语法吗?

谢谢

【问题讨论】:

  • 您遇到了什么错误?
  • 关于 types.Contains :- "'string[]' 不包含 'Contains' 的定义和最佳扩展方法重载 'Queryable.Contains(IQueryable, int) ' 需要类型为 'IQueryable' " 的接收器
  • type.TypeIDstring?如果没有,您可能需要将其解析为int 或将types 更改为int[]
  • 您告诉我们您有错误,但仅此一项并不能帮助我们。你能解释一下你想要达到的目标吗?
  • 什么是 TypeID 的类型?

标签: c# entity-framework linq linq-to-entities


【解决方案1】:

根据您的错误消息,type.TypeIDint

所以你基本上有两个选择:

选项 1:将 types 转换为 int[]

int[] types = typeId[0].Split(',').Select(id => int.Parse(id)).ToArray();
marketing = marketing.Where( type => types.Contains(type.TypeID)).ToList();

选项 2:将 type.TypeID 转换为 string

string[] types = typeId[0].Split(',');
marketing = marketing.Where( type => types.Contains(type.TypeID.ToString())).ToList();

【讨论】:

  • 是的,我采用了 .ToString() 方法。感谢您的帮助!
猜你喜欢
  • 2010-10-25
  • 1970-01-01
  • 2013-01-15
  • 2023-03-29
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多