您好我的项目中有以下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
谁能告诉我我做错了什么?
答案 0 :(得分:3)
您的问题是claim
是一个字符串,而intClaimID是一个int。换句话说,你正在比较苹果和橘子。
您需要执行以下操作:
where x.ClaimName == claim
或者您需要让用户输入一个数字,在这种情况下您必须将其转换为ant int(来自文本框的字符串)
int userClaimID = int.Parse(claim); // or TryParse
然后将其添加到表达式
where x.intClaimID == userClaimID
答案 1 :(得分:2)
您需要加倍=
才能进行比较。您还试图将string
与int
进行比较。我建议先将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
解析为整数。