Linq查询使用变量

时间:2014-05-29 13:31:54

标签: c# linq

您好我的项目中有以下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

谁能告诉我我做错了什么?

4 个答案:

答案 0 :(得分:3)

您的问题是claim是一个字符串,而intClaimID是一个i​​nt。换句话说,你正在比较苹果和橘子。

您需要执行以下操作:

where  x.ClaimName == claim

或者您需要让用户输入一个数字,在这种情况下您必须将其转换为ant int(来自文本框的字符串)

int userClaimID = int.Parse(claim); // or TryParse

然后将其添加到表达式

where  x.intClaimID == userClaimID 

答案 1 :(得分:2)

您需要加倍=才能进行比较。您还试图将stringint进行比较。我建议先将claim转换为int

int claimId = int.Parse(claim);

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

答案 2 :(得分:0)

int claimInt = Int.Parse(claim);

...

答案 3 :(得分:-1)

您不需要使用括号

from x in dbContext.view_ImageVerification_Shortened      
where  x.intClaimID.ToString() == claim
select new { .. }

此外,==用于比较=用于分配。

如果要比较两个不兼容的类型,则需要转换其中一个。在这种情况下,在整数(intClaimID)上使用ToString,或者将claim解析为整数。