Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq动态where子句查询以查找包含第一个字符的行是数字_C#_Entity Framework_Linq_Model View Controller_Dynamic - Fatal编程技术网

C# Linq动态where子句查询以查找包含第一个字符的行是数字

C# Linq动态where子句查询以查找包含第一个字符的行是数字,c#,entity-framework,linq,model-view-controller,dynamic,C#,Entity Framework,Linq,Model View Controller,Dynamic,我有以下代码来查找where子句以搜索在列的第一个字符上包含数字的行 如果您有解决方案,请回复。下面是代码结果,但只返回一行 var strs = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; query = query.Where("@0.Contains(Name.Substring(0,1))", strs); query = query.Where("Name.Substring(0,1).Conta

我有以下代码来查找where子句以搜索在列的第一个字符上包含数字的行 如果您有解决方案,请回复。下面是代码结果,但只返回一行

var strs = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
query = query.Where("@0.Contains(Name.Substring(0,1))", strs);
query = query.Where("Name.Substring(0,1).Contains(@0)", strs);
query = query.Where("Name.Contains(@0)", strs);
query.Where("Name.StartsWith(\"[0-9]\")");

您可以使用以下选项:

query = query.Where("@0.Contains(outerIt.Name.Substring(0, 1))", (object)strs);
有两个动态LINQ细节

首先,大多数动态方法的最后一个参数声明为
params object[]values
,因此为了将字符串数组作为单个变量传递,需要将其强制转换为
object
,否则,由于
string[]
可强制转换为
object[]
,它将作为
变量传递
@0
基本上是指
strs[0]

其次,一旦您正确地传递了
strs
,出于某种原因,您必须在
Contains
方法中使用
outerIt
来访问实体属性

另一种方法是去掉
strs
数组,并使用以下标准:

query = query.Where("Name.Substring(0, 1) >= \"0\" and Name.Substring(0, 1) <= \"9\"");

query=query.Where(“Name.Substring(0,1)>=”0\”和Name.Substring(0,1)发布完整的代码,它到底在哪里返回一行?您是否尝试过从strs端接近它?将strs设置为字符串并使用strs.Contains(Name.Substring(0,1))?Sql查询是从中左侧(Name,1)的组织中选择名称('0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9')从组织中选择名称,其中ISNUMERIC(左(名称,1))=1@TigOldBitties我正在使用System.Linq.Dynamic作为动态where条件,所有内容都在运行,非常感谢。它已被解决。在where子句中使用outerIt和(object):-)