C# 使用变量的Linq查询

C# 使用变量的Linq查询,c#,linq,C#,Linq,嗨,我的项目中有以下Linq: string claim; claim = txtImageVerificationClaimSearch.Text; var claimsearch = (from x in dbContext.view_ImageVerification_Shortened where(x.intClaimID = claim) select new 我收到一些错误消息: Cannot

嗨,我的项目中有以下Linq:

string claim;
claim = txtImageVerificationClaimSearch.Text;

var claimsearch = (from x in dbContext.view_ImageVerification_Shortened      
                   where(x.intClaimID = claim)
                   select new
我收到一些错误消息:

Cannot implicitly convert type 'string' to 'int'
我知道这个错误的意思,但我不知道修复它的语法。 我还收到了错误消息:

Error 2: Cannot convert lambda expression to type 'string' because it is not a delegate type    
C:\_Applications-TFS\IVS\Main\ImageVerificationSystem\ImageVerificationSystem\Default.aspx.cs   97  36  ImageVerificationSystem
我也明白了:

Delegate 'System.Func<ImageVerificationSystem.view_ImageVerification_Shortened,int,bool>' does not take 1 arguments
委托“System.Func”不接受1个参数

谁能告诉我我做错了什么

你不需要括号里的内容

from x in dbContext.view_ImageVerification_Shortened      
where  x.intClaimID.ToString() == claim
select new { .. }
另外,
=
用于比较
=
用于作业


如果要比较两个不兼容的类型,需要转换其中一个。在这种情况下,可以对integer(intClaimID)使用
ToString
,或者将
声明
解析为integer。

需要double
=
进行比较。您还试图将
string
int
进行比较。我建议首先将
claim
转换为
int

int claimId = int.Parse(claim);

var claimsearch = (from x in dbContext.view_ImageVerification_Shortened      
                   where(x.intClaimID == claimId)
                   select x);

您的问题是,
claim
是一个字符串,而intClaimID是一个int。换句话说,您是在比较苹果和桔子

您需要执行以下操作:

where  x.ClaimName == claim
或者,您需要要求用户输入一个数字,在这种情况下,您必须将其转换为ant int(从文本框的字符串)

然后将其添加到表达式中

where  x.intClaimID == userClaimID 

错误清楚地表明你做错了什么?似乎
x.intClaimID
是整数,您尝试根据字符串检查它!!在赋值中,他get
不能隐式地将类型“string”转换为“int”
您必须显式地强制转换它。-1对集合中的每个项进行字符串转换,而不是在单个字符串转换为int时执行字符串转换?这是非常低效的,我不会在一百万年内以这种方式解决它。考虑一下,如果这是一个使用LyQoSQL或类似的SQL查询会发生什么?是的,这是一个很大的问题。它可能需要数百万年。一百万年可能是夸张的,除非你是一个真正可怕的开发者。是的,我很高兴你承认你的失败,以及代码会有多慢。个人成长难道不是一件美妙的事情吗?不,不用谢我。请不要,知道你更开明就足够了!不,不可以-我告诉他先把他的声明转换成一个整数变量,然后在他的查询中使用它。也许我可以说得更清楚一些……啊,对不起,但它必须在(x.intClaimID==claimInt)的位置
int userClaimID = int.Parse(claim); // or TryParse
where  x.intClaimID == userClaimID